C语言有一个3*4的矩阵,用c语言编写程序找出其中值最大的元素,并输出最大值、最大值所在的行号和列号。

#include<stdio.h>
void main()
{int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int i,j,c,d,max;
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];
c=i;
d=j;
}
}
printf("%d最大数\n%d行号\n%d列号",max,c,d);
}
就是这里的 if(max<=a[i][j])
这个什么意思啊 详细说一下 为什么max就是最大值啊a[i][j])
详细 详细点 我是小菜鸟 详细点 详细点 详细点 谢谢
感谢你们啊 不过还是不懂啊 主要是max这个变量到底是怎么变化的啊 最好能说出max怎么=10 我是初学者 很笨 望大家理解

因为max最终放的是最大的值,所以用判断语句判断max是否小于a[i][j],如果max 小的话,就说明原来赋给max的值不是最大值,有一个值比它大,那么,就要把这个大赋给max,循环完后,max就与所以的值都比了一次,找到了最大的。

比如我有3个数,找出一个最大的。
int a[2]={1,2,3,} //数组a[0]=1,a[1]=2,a[2]=3
max=a[1] //max=1
if (max<a[2]) max=a[2] 因为max 原来的值等于1,小于a[2],所以,现在要把大的数a[2]给max
if(max<a[3]) max=a[3] 因max原来的值等于2了,小于a[3],所以,现在要把大的数a[3]给max
最后max里放的是最大的数。即a[3]的值3。

另外,a[i][j]中的i 和j 是循环中的变量,i 对第几行,j 对应第几列。所以只要找到最大值,就用其它变量保存,那么就知道了该数的i 和 j ,即最大值所在的行号和列号。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-31
if(max<=a[i][j])
这个是条件判断,如果a[i][j]大于max,则
{max=a[i][j];
c=i;
d=j;
}
将当前的a[i][j]赋给max

如果没有比max大,则不执行
{max=a[i][j];
c=i;
d=j;
}
而是转到{for(j=0;j<4;j++)
调出下一个数,与max比较

因此,在已经进行比较 完成 的数之中,max总是代表的最大一个。
第2个回答  2010-12-31
max=a[0][0],这是把二维数组首地址的数赋给max;
接下来的 for(i=0;i<3;i++)是主函数行的循环,说明共三行;
for(j=0;j<4;j++)是列的循环,伴随着行一起移动;
if(max<=a[i][j]),这是一个判断语句,就是拿数组a第i行第j列的数与max(首地址的数)比较,
当满足条件时就把i行j列的数值赋值给max;
即:max=a[i][j]; c=i; d=j;
一次次地比较下来,凡是比max大的数,都会与max的值进行交换,
所以max只会保留最大的数。

这就是我的解答啦,可能你还是有点不懂,
但是我已经尽力了哦,祝你好运。。。。。
第3个回答  2010-12-31
没出现一次a[i][j]比max大的情况,用a[i][j]替换掉max,那么把所有的数值循环一遍后,留下的就是最大的,因为没有被比它更大的替换掉,所以没有比max更大的数
第4个回答  2010-12-31
max表示最大值
a[i][j] 表示横下标为i 列下标为j 的二维数组a 的值
假设数组的值大于max就执行这句max=a[i][j] 就是将大的值赋值给max
所以max总是最大值
相似回答