|
发表于 2011-6-24 08:49:41
|
显示全部楼层
必须记录每行max元素所在的列,LZ代码把“max变量和对角线元素互换”,但实际应该要把“每行最大的元素和对角线元素互换”,max只是和行最大的元素的值一样,但他们是两个不同的变量。
修改的程序如下:- #include<stdio.h>
- void main()
- {
- int i,j,max,temp;
- int k=0,l=0;
- int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
- for(i=0;i<5;i++)
- {
- int max_j=0;
- max=a[i][0];
- for(j=0;j<5;j++){
-
- if(a[i][j]>max){
- max=a[i][j];
- max_j=j;
- }
- }
- /*
- for(j=0;j<5;j++)
- {
- if(max!=a[i][j]&&(i==j))
- {
- temp =a[i][j];
- a[i][j]=max;
- max=temp;
- }
- }
- */
- if(a[i][max_j]!=a[i][i]){
- temp = a[i][max_j];
- a[i][max_j]=a[i][i];
- a[i][i]=temp;
- }
- }
- while(k<5&&l<5)
- {
- while(l<5)
- {
- printf("%-6d ",a[k][l]);
- l++;
- }
- l=0;
- k++;
- printf("\n");
- }
- }
复制代码 |
|