c语言中,3行3列矩阵的转置,这样编写fun函数为什么不对?该怎样??

2024-11-14 13:40:21
推荐回答(3个)
回答1:

错了,这样下三角被上三角覆盖了

改为下面就可以了

void fun(int array[3][3])
{int i,j,temp;
for (i=0;i<3;i++)
for (j=0;j<;j++)
{
trmp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
}
}

其实很好理解,打个比方
int a=5,b=6;
a=b;
b=a;
其实 ab的值都被6覆盖了

回答2:

矩阵转置意味着array[i][j]和array[j][i]数据发生了交换
即你需要一个临时变量,temp,使
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;
这样才能做到数据交换
你的错误在于丢失了array[i][j]的原始数据

回答3:

你这样原来数组里面的数据被后来修改的覆盖了。
比如说当i=1、j=2时,执行array[i][j]=array[j][i]时,araay[1][2]的值被araay[2][1]的值所替代,(你认为)只是简单地将所谓的旧的array[2][1]的值赋值给所谓的新的araay[1][2]。