鱼C论坛

 找回密码
 立即注册
查看: 3684|回复: 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");
}
}

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-6-24 08:39:16 | 显示全部楼层
为什么结果却是5 2 3 4 5
                     6 10 8 9 10
                     。。。。。max和对角线元素不能互换?
                    
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-6-24 08:49:41 | 显示全部楼层
必须记录每行max元素所在的列,LZ代码把“max变量和对角线元素互换”,但实际应该要把“每行最大的元素和对角线元素互换”,max只是和行最大的元素的值一样,但他们是两个不同的变量。
修改的程序如下:
  1. #include<stdio.h>
  2. void main()
  3. {
  4.         int i,j,max,temp;
  5.         int k=0,l=0;
  6.     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}};
  7.         for(i=0;i<5;i++)
  8.         {   
  9.                 int max_j=0;
  10.                 max=a[i][0];
  11.                 for(j=0;j<5;j++){
  12.                        
  13.                         if(a[i][j]>max){
  14.                                 max=a[i][j];
  15.                                 max_j=j;
  16.                         }      
  17.                 }
  18.                 /*
  19.                 for(j=0;j<5;j++)
  20.                 {
  21.                         if(max!=a[i][j]&&(i==j))
  22.                         {   
  23.                                 temp =a[i][j];
  24.                                 a[i][j]=max;
  25.                                 max=temp;
  26.                         }
  27.                 }
  28.                 */
  29.                 if(a[i][max_j]!=a[i][i]){
  30.                         temp = a[i][max_j];
  31.                         a[i][max_j]=a[i][i];
  32.                         a[i][i]=temp;
  33.                 }
  34.         }
  35.         while(k<5&&l<5)
  36.         {
  37.         while(l<5)
  38.                 {
  39.                         printf("%-6d ",a[k][l]);
  40.                         l++;
  41.                 }
  42.                 l=0;
  43.                 k++;
  44.                 printf("\n");
  45.         }
  46. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-6-24 12:24:27 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-12 11:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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