C语言的一段程序

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:54:11
最近学了"指向二维数组的指针",编了个小程序,用指针的方法对一个3X3的矩阵进行转置,程序如下:
main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int temp;
int i,j; //分别代表矩阵的行和列
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",*(*(a+i)+j)); //打印原矩阵
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{ temp=*(*(a+i)+j); //行列互换
*(*(a+i)+j)=*(*(a+j)+i); //行列互换
*(*(a+j)+i)=temp; //行列互换
}
}
printf("\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%5d",*(*(a+i)+j)); //打印转置后的矩阵
printf("\n");
}
getch();
}
可是程序并没有输出转置后的矩阵,还是原来的矩阵,不知原因在哪,请高手不吝赐教,谢谢
先感谢一下.
我也想过这方法,但想不通的是,
temp=*(*(a+i)+j); //行列互换
*(*(a+i)+j)=*(*(a+j)+i); &#

printf("%5d",*(*(a+i)+j)); //打印转置后的矩阵
改为
printf("%5d",*(*(a+j)+i)); //打印转置后的矩阵

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{ temp=*(*(a+i)+j); //行列互换
*(*(a+i)+j)=*(*(a+j)+i); //行列互换
*(*(a+j)+i)=temp; //行列互换
}
}
不要都可以