数组的转置问题(3*3)

来源:百度知道 编辑:UC知道 时间:2024/09/28 15:06:13
在转置是我写的转置的函数是
void zhaunhuan(int arry[3][3])
{ int i,j;

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
arry[i][j]=arry[j][i];
}
输入1 2 3
4 5 6
7 8 9
得到的结果是1 4 7
4 5 8
7 8 9
不动哪里错了还望指教!!

void zhaunhuan(int arry[3][3])
{ int i,j;

for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
arry[i][j]=arry[j][i];//arry[i][j]值被arry[j][i]值覆盖,arry[i][j]值丢失
}
另外定义一个数组保存原值
void zhaunhuan(int arry[3][3])
{ int i,j,newarry[3][3];

for(i=0;i<3;i++)
for(j=0;j<3;j++)
newarry[i][j]=arry[i][j];

for(i=0;i<3;i++)
for(j=0;j<3;j++)
arry[i][j]=newarry[j][i];
}

是这样的你的有些元素在未被使用前就遭到了破坏,如
第一次循环arry[0][2]=a[2][0],
即为7
那么
a[2][0]=a[0][2]
也为了7,
而实际应该是a[0][2]原来的3.