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

2024-12-04 20:47:00
推荐回答(5个)
回答1:

因为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 (maxif(max最后max里放的是最大的数。即a[3]的值3。

另外,a[i][j]中的i 和j 是循环中的变量,i 对第几行,j 对应第几列。所以只要找到最大值,就用其它变量保存,那么就知道了该数的i 和 j ,即最大值所在的行号和列号。

回答2:

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总是代表的最大一个。

回答3:

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只会保留最大的数。

这就是我的解答啦,可能你还是有点不懂,
但是我已经尽力了哦,祝你好运。。。。。

回答4:

没出现一次a[i][j]比max大的情况,用a[i][j]替换掉max,那么把所有的数值循环一遍后,留下的就是最大的,因为没有被比它更大的替换掉,所以没有比max更大的数

回答5:

max表示最大值
a[i][j] 表示横下标为i 列下标为j 的二维数组a 的值
假设数组的值大于max就执行这句max=a[i][j] 就是将大的值赋值给max
所以max总是最大值