17.有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。

有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
#include <stdio.h>
#define M 3
#define N 4
main()
{ int max,i,j,r,c;
int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};
max=a[0][0];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(a[i][j]>max) { max=a[i][j]; r=i; c=j; }
printf("max=%d,row=%d,colum=%d\n",max,r,c);
}
输入并调试、运行程序,记录程序的输出;若将a[0][0]改为1230,程序运行结果有错,应如何修改程序?

#include <stdio.h>
#define M 3
#define N 4
main()
{ int max,i,j,r,c;
int a[M][N]={{1230,94,-10,218},{3,9,10,-83},{45,16,44,-99}};
max=a[0][0];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(a[i][j]>=max) { max=a[i][j]; r=i; c=j; } //你改为>=max ,如果不加=,这句话根本不执行,那么结果r,c一直没有赋值了,没初始化
printf("max=%d,row=%d,colum=%d\n",max,r,c);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-27
#include <stdio.h>
#define M 3
#define N 4
main()
{ int max,i,j,r,c;
int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}};
max=0;//改动了下
for(i=0;i<M;i++)
{//加个括号不的耽搁你多少时间,而且看起来美观,程序可读性行高很多。
for(j=0;j<N;j++)
{
if(a[i][j]>max) //因为你定义的max=a[0][0]而你有从第一个开始比较他们相等,所以不执行,
你可以吧max定义为0;
{
max=a[i][j]; r=i; c=j;
}
}
}
printf("max=%d,row=%d,colum=%d\n",max,r,c);
}

OK ,应该可以了~~
第2个回答  2013-04-27
其实就是max=a[0][0];有点小问题,既然max=a[0][0]; 那么就要附加 r = 0; j = 0; 就没问题了
max=a[0][0];
//中间加上
r = 0;
j = 0;
for(i=0;i<M;i++)
第3个回答  2013-04-27
if(a[i][j]>=max){max=a[i][j]; r=i; c=j;}就可以了
相似回答