我又看 了下,你的对的,再加个头文件
#include
把int i,j,a[5][5],max,T;改成int i,j,a[5][5],max,T,x,y;——即增加变量x和y用于记录位置。
把for(i=0;i<5;i++)改成for(max=a[i=0][0];i<5;i++)。
把max=a[i][0];删除。
把T=max;max=a[i][i];a[i][i]=T;三行删除。
在刚删除的这三行后的}后添加T=a[x][x];a[x][x]=a[x][y];a[x][y]=T;。
你这里,交换数值的时候,交换的是max和a[i][i],而不是a[i][j]和a[i][i],当然会出现你这个问题……
你可能会想,max不是就是a[i][j]吗?在计算机里面,max=a[i][j]的意思是赋值,意思是把a[i][j]赋值到max变量中。而后续对于max变量的处理和a[i][j]一点关系没有。
所以你不但需要保存最大值,还需要保存下标j(比方说用另一个变量maxj),这样才知道a[i][i]要和矩阵中哪个变量进行交换。当然,用指针也可以。
有问题追问