#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;
}
修改后的代码如下:
#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;
}
如有帮助,望采纳!谢谢!