最近学了"指向二维数组的指针",编了个小程序,用指针的方法对一个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); //行列互换
*(*(a+j)+i)=temp;
//行列互换
此时,应该是第一行147,第二行258,第三行369,那么重新以同样顺序打印矩阵时,就应该是
1 4 7
2 5 8
3 6 9
但实际按同样顺序打印的还是
1 2 3
4 5 6
7 8 9
始终想不明白 @_@
|