鱼C论坛

 找回密码
 立即注册
查看: 3287|回复: 3

请高手指点指点

[复制链接]
发表于 2011-6-24 08:36:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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++)
{   
  max=a[i][0];
  for(j=0;j<5;j++)
  {
            
     if(a[i][j]>max)
     {
      max=a[i][j];
    }      
  }
  for(j=0;j<5;j++)
  {
  if(max!=a[i][j]&&(i==j))
   {   
   temp =a[i][j];
      a[i][j]=max;
   max=temp;
   }
  }
}
while(k<5&&l<5)
{
        while(l<5)
  {
  printf("%-6d ",a[k][l]);
  l++;
  }
  l=0;
  k++;
  printf("\n");
}
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-24 08:39:16 | 显示全部楼层
为什么结果却是5 2 3 4 5
                     6 10 8 9 10
                     。。。。。max和对角线元素不能互换?
                    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 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");
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-24 12:24:27 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 00:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表