当前位置: 代码迷 >> C语言 >> 为什么没人回答啊,急死我了。一个关于用指针解决矩阵转置的问题
  详细解决方案

为什么没人回答啊,急死我了。一个关于用指针解决矩阵转置的问题

热度:80   发布时间:2007-11-26 18:22:02.0
为什么没人回答啊,急死我了。一个关于用指针解决矩阵转置的问题
输入一个3*3矩阵,将该矩阵转置,并输出转置后的矩阵。(用指针操作二维数组中的元素)

[[italic] 本帖最后由 zylwzg 于 2007-11-26 19:45 编辑 [/italic]]
搜索更多相关的解决方案: 矩阵  指针  解决  元素  置后  

----------------解决方案--------------------------------------------------------
#include "stdio.h"
void move(int *pointer)
{
int i,j,k;
for(i=0;i<3;i++)
{
  for(j=i;j<3;j++)
  {
   k=*(pointer+3*i+j);
   *(pointer+3*i+j)=*(pointer+3*j+i);
   *(pointer+3*j+i)=k;
  }
}
}
int main(void)
{
int a[3][3],*p,i;
printf("请输入数:\n");  //数于数之间用逗号分开,每输入三个按回车!
for(i=0;i<3;i++)
{
  scanf("%d,%d,%d",&a[i][0],&a[i][1],&a[i][2]);
}
p=&a[0][0];
move(p);
printf("交换完的数为:\n");
for(i=0;i<3;i++)
{
  printf("%d,%d,%d\n",a[i][0],a[i][1],a[i][2]);
}
getchar();
return(0);
}
----------------解决方案--------------------------------------------------------
最主要就是move函数中的两个fort循环吧.呵呵.分析题目就知道了.
----------------解决方案--------------------------------------------------------
#include "stdio.h"
void ZhuanZhi(int (*p)[3]);
void main()
{
int a[3][3],i,j;
for(i=0;i<3;i++)
{
  for(j=0;j<3;j++)
  {
   scanf("%d",&a[i][j]);
  }
}
printf("before zhuanzhi:\n");
for(i=0;i<3;i++)
{
  for(j=0;j<3;j++)
  {
   printf("%d",a[i][j]);
  }
  printf("\n");
}
ZhuanZhi(a);
printf("after zhuanzhi:\n");
for(i=0;i<3;i++)
{
  for(j=0;j<3;j++)
  {
   printf("%d",a[i][j]);
  }
  printf("\n");
}
}
void ZhuanZhi(int (*p)[3])
{
int i,j;
for(i=0;i<3;i++)
{
  for(j=0;j<=i;j++)
  {
   int t=p[i][j]; p[i][j]=p[j][i];p[j][i]=t;
  }
}
}
----------------解决方案--------------------------------------------------------
谢谢你们了
呵呵 这下我可以多多长知识了
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
我这样做的为什么不对啊,帮我分析下
#include<stdio.h>

void main()
{
    int a[3][3],i,j;
    for (i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
    {
        scanf("%d",&a[i][j]);
    }
    }


    printf("转换前为\n");
    for (i=0;i<3;i++)
     {
    for(j=0;j<3;j++)
    {
        printf("%d ",a[i][j]);
    }
    printf("\n");
     }
   
    for (i=0;i<3;i++)
     {
    for(j=0;j<3;j++)
    {
        int t=a[i][j];
        a[i][j]=a[j][i];
        a[j][i]=t;

    }

     }



    printf("转换后为:");
   
    for (i=0;i<3;i++)
    {
   for(j=0;j<3;j++)
    {
     printf("%d ",a[i][j]);
    }
    printf("\n");
    }

}
----------------解决方案--------------------------------------------------------
  相关解决方案