题目来源:大工慕课 链接
作者:Caleb Sung
注意事项
定义计算最大值的函数时,要注意形参指定类型时使用a[][]
定义是非法的,报错如下:
array type has incomplete element type
直接翻译过来就是说数组类型具有不完全元素类型,详细原因参见C语言二维数组的基础概念。
因而必须像这样定义:
int calc(int a[5][5])
或者a[][5]
,这样也是可以的。
参考解答
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main(){
int a[5][5], i, j, max;
srand(time(NULL)); //生成随机种子
for(i=0; i<5; i++) //赋值
for(j=0; j<5; j++)
a[i][j] = rand() % 100 + 0;
printf("随机生成的数组为:\n");
for(i=0; i<5; i++)
for(j=0; j<5; j++)
{
printf("%d\t", a[i][j]);
if(j == 4 )
printf("\n");
}
printf("\n");
max = calc(a);
printf("副对角线中最大的元素是:%d", max);
}
int calc(int a[5][5]){
int max=0, i, j;
for(i=0; i<5; i++)
if(a[4-i][i] > max)
max = a[4-i][i];
return max;
}
运行结果
随机生成的数组为:
3 6 6 5 97
10 96 32 96 35
7 63 60 99 63
36 56 41 22 20
65 59 7 87 98
副对角线中最大的元素是:97