为什么这个代码运行后答案不是9 0 2

#include<stdio.h>
int main()
{
int a[3][4],i,j,max,t,cnt=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(max<a[i][j])
{
t=max;max=a[i][j];
a[i][j]=t;
}
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
if(a[i][j]==max&&cnt==0)
{
printf("%d %d %d\n",max,i,j);
cnt++;
}
}
return 0;
}

img

  • img

修改后的代码如下:

#include<stdio.h>
int main()
{
    int a[3][4],i,j,max,t,cnt=0;
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
            scanf("%d",&a[i][j]);
    max=a[0][0];
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
            if(max<a[i][j])
            {
                max=a[i][j];
            }
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
        {
            if(a[i][j]==max && cnt==0)
            {
                printf("%d %d %d\n",max,i,j);
                cnt++;
            }
        }
    return 0;
}

你有两个9, 输出的是第二个9的下标

你题目的解答代码如下:

#include <stdio.h>
int main()
{
    int a[3][4], i, j, max, t, cnt = 0;
    for (i = 0; i < 3; i++)
        for (j = 0; j < 4; j++)
            scanf("%d", &a[i][j]);
    max = a[0][0];
    for (i = 0; i < 3; i++)
        for (j = 0; j < 4; j++)
            if (max < a[i][j])
            {
                //这两行去掉,不是排序,不需要交换
                //t = max;
                max = a[i][j];
                // a[i][j] = t;
            }
    for (i = 0; i < 3; i++)
        for (j = 0; j < 4; j++)
        {
            if (a[i][j] == max && cnt == 0)
            {
                printf("%d %d %d\n", max, i, j);
                cnt++;
            }
        }
    return 0;
}

img

如有帮助,望采纳!谢谢!