回 帖 发 新 帖 刷新版面

主题:[讨论]找出二维矩阵中的最大值、最小值及其所在的行和列。

找出二维矩阵中的最大值、最小值及其所在的行和列。
#include<stdio.h>
void main()
{
int a[3][3];
int i,j,max,min;
int row1,column1,row2,column2;
printf("please input nine numbers:");
for(i=0;i<3;i++)
  for(j=0;j<3;j++)
    scanf("%d",&a[i][j]);
max=min=a[0][0];
for(i=0;i<3;i++)
  for(j=0;j<3;j++)
     {
       if(max<a[i][j])
     {
      max=a[i][j];
      row1=i;
      column1=j;
     }
       if(min>a[i][j])
     {
      min=a[i][j];
      row2=i;
      column2=j;
     }
  }
  printf("the max is %d ,min is %d\n",max,min);
  printf("max is in %d,%d\n",row1,column1);
  printf("min is in %d,%d\n",row2,column2);
}
麻烦大家帮我看看,为什么我输入1 2 3 4 5 6 7 8 9时,结果不是正确的,但输入其他的一些数如:12 3 4 5 6 7 8 98 6时结果就正确?
谢谢了。 

回复列表 (共3个回复)

沙发

max=min=a[0][0];
这句话你初始化了max和min,但是。。。
row1,column1,row2,column2——这四个变量你初始化了没?

板凳

#include<stdio.h>

void main()
{
    int a[3][3];
    int i,j,max,min;
    int row1=0,column1=0,row2=0,column2=0;
    printf("please input nine numbers:");
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            scanf("%d",&a[i][j]);
        printf("%d",a[2][2]);
        max=min=a[0][0];
        for(i=0;i<3;i++)
            for(j=0;j<3;j++)
            {
                if(max<a[i][j])
                {
                    max=a[i][j];
                    row1=i;
                    column1=j;
                }
                if(min>a[i][j])
                {
                    min=a[i][j];
                    row2=i;
                    column2=j;
                }
            }
            printf("the max is %d ,min is %d\n",max,min);
            printf("max is in %d,%d\n",row1,column1);
            printf("min is in %d,%d\n",row2,column2);
}


就像上面那个同学说的那样,因为有可能你的给的数据,不进入max和min中的一个if语句,那样的话,你的数组下角就没法进行赋值,并且你没有给他们初始化,所以他读的时候就是直接在缓冲区读了一个数据,所以会出现这个错误的

3 楼

[em2]看了,想了,[em3]终于得出了结论!#include<stdio.h>
void main()
{
int a[3][3];
int i,j,max,min;
int row1,column1,row2,column2;
printf("please input nine numbers:");
for(i=0;i<3;i++)
  for(j=0;j<3;j++)
    scanf("%d",&a[i][j]);
max=min=a[0][0];//这里也应该给row1,column1,row2,column2赋初值!
row1=0,column1=0,row2=0,column2=0;因为当最大,最小值出现在(0,0)位置,就输不出来!
[em11]

我来回复

您尚未登录,请登录后再回复。点此登录或注册