C语言数组问题 有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和例号

void main
{
int i,j row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
}
这书书上的例题 我有几个搞不懂的地方
一、max=a[0][0]这里是将第0行0例的元素赋给max吗? 也就是将1赋给max?
二、if(a[i][j]>max)此时max又是多少?1?应该不是1吧

执行max=a[0][0]后max=1
if(a[i][j]>max)此时max值不能确定,因为前面有两个循环嵌套,执行完
if(a[i][j]>max) //此处i j值不确定,不知道max是否比a[i][j]大
{
max=a[i][j]; //此处i j值不确定,max可能会变化
row=i;
colum=j;
}
后会执行 j++ ,如果此时 j<=3 则继续执行 if 语句,如果 j>3 则执行 i++;j=0;
然后再次执行 if(a[i][j]>max) 语句 ,此时的i、j都不能确定,此前max的值有可能变化了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-25
代码的意思是 首先 需要一个辅助变量 max 保存最大值对吧 ?

然后 给max赋值a[][]数组的第一个元素 , 之后遍历其他剩下的元素,比max大,就保存值在max中,

那遍历完一次后,max就是数组a[][]中最大的值了.
if(a[i][j]>max)
{
max=a[i][j];//刷新max值
row=i;//保存行号
colum=j;//保存列号
}
第2个回答  2012-02-25
第一个问题:恩 是的 只是给max赋一个初值而已
第二个问题:第一次进入循环是max就是第一个值1,当a[i][j]位置大于max值时将max值换成a[i][j],同时得到row和colum,当不符合a[i][j]>max时if语句就不会执行,知道数组循环结束,得到最终max的值。
第3个回答  2012-02-25
Max保存最大值、好果下一个比Max大,则替换max的值
第4个回答  2012-02-26
嗯 是的,就是把1附给a[0][0] if(a[i][j]>max)就将a[i][j]附给a[0][0] ,程序不是很清楚吗

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网