请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include < stdio.h >
#define M 4
inf fun(int a[][M])
{
}
main()
{
int arr[2][M]={5,8,3,45,76,—4,12,82};
void NONO();
printf(″max =%d\n″,fun(arr));
NONO();
}
void NONO()
/*本函数用于打开文件,输入数据,
调用函数,输出数据,关闭文件。*/
{
FILE *wf;
int arr[][M]={5,8,3,90,76,—4,12,82};
wf=fopen(″out.dat″,″w″);
fprintf(wf,″max=%d\n″.fum(arr));
fclose(wf);
}
【正确答案】int fun(int a[][M])
{
int i,j,max=a[0][0];
for(i=0;i< 2;i+ +)
for(j=0;j< M;j+ +)
if(max< a[i][j])
max=a[i][j];
return max:
}
【答案解析】本题考查:求数组的最大值,需要运用循环语句,因为数组是二维数值,所以应使用二层加for循环嵌套。使用for循环语句时需要注意循环变量的取值范围。
此类求最大值或最小值的问题,可以采用逐个比较的方式,要求对数组中所有元素遍历一遍,并且从中找出数组最大值或最小值。首先定义变量max存放数组中的第一个元素的值,然后利用for循环逐个找出数组中的元素,并与max比较,如果元素值大于max,则将该值赋于max,循环结后max的值即为数组最大值,最后将该值返回。
说明:该类题目考查较多,要掌握逐行比较的方法。对于m*n二维数组,如采用逐行查找方法,代码实现为:
for(i=0;i< m;i+ +)
for(j=0;j< n;j+ +)