c语言要求置换3*3矩阵 哪个大虾看下错误
#include "stdio.h"
int main()
{int a[3][3],*p,i,j;
printf ("enter an array of 3 mulit by 3:");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf ("%d",&a[i][j]);
p=a[0];
move(p);
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{printf ("%3d",&a[i][j]);
if(j==2) printf ("\n"); }}
move (int * pointer)
{ int i,j,t;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{t=*((pointer+i)+j);
*((pointer+i)+j)=*((pointer+j)+i);
*((pointer+j)+i)=t;}
}
答案:在你的代码基础上给你改了下。。。在VC++中调试成功。。。。。
改过的地方都注释了。。。。。希望能帮到你。。。。
#include "stdio.h"
void move (int (*pointer)[3]);//加一个函数声明
void main()
{int a[3][3],(*p)[3],i,j;//改过p的定义
printf ("enter an array of 3 mulit by 3:");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf ("%d",&a[i][j]);
p=a;//改过
move(p);
for (i=0;i<3;i++)
for (j=0;j<3;j++)
{printf ("%3d",a[i][j]);//改过,输出值不加&
if(j==2) printf ("\n"); }
}
void move (int (*pointer)[3])//改过
{ int i,j,t;
for (i=0;i<3;i++)
for (j=i;j<3;j++)
{t=*(*(pointer+i)+j);//改过
*(*(pointer+i)+j)=*(*(pointer+j)+i);//改过
*(*(pointer+j)+i)=t;}//改过
}
其他:for (j=0;j<3;j++)
{printf ("%3d",&a[i][j]);
中的&有什么用呢?呵呵
上一个:c语言与什么专业挂钩
下一个:c语言程序