问题 单项选择题

有以下程序:
#include <stdio.h>
int fun(int(*s) [4], int n, int k)
int m, i;
m=s[0][k];
for(i=1; i<n; i++) if(s[i][k]>m) m=s[i][k];
return m;

main()
int a[4][4]=1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34;
printf("%d\n", fun(a, 4, 0) );

程序的运行结果是( )。

A) 4
B) 34
C) 31
D) 32

答案

参考答案:C

解析: 本题考查的是二维数组的定义、赋初值和对二维数组元素的引用;在fun()函数中,首先将a[0][k]的值赋给m,然后通过for循环,遍历s[1][k]-s[n-1][k]之中的数,将遇到的比m大的数保存到m中。很显然,这是搜索最大值的算法,搜索的是s[0][k]~s[n-1][k]之间的最大值。所以,主函数中fun(a,4,0)的功能就是搜索a[0][0]~a[3][0]之间的最大值,这4个值分别是1、11、21、31,所以最终输出结果是31,应该选择C)。

多项选择题
多项选择题