问题 填空题

以下程序中,fun函数的功能是求3行4列二维数组每行元素的最大值。请填空。
void fun(int,int,int (*)[4], int *);
main()

int a[3][4]=12,41,36,28,19,33,15,27),3,27,19,1,b[3],i;
fun(3,4,a,B) ;
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");

void fun(int m,int n,int ar[][4],int *br)
int i,j,x;
for(i=0;i<m;i++)

x=ar[i][0];
for(i=0;j<n;j++) if(x<ar[i][j]) x=ar[i][j];
______=X;

答案

参考答案:br[i]或*(br+i)

解析: 求最大值算法要求输入的一般是一系列数,例如一个数组,而输出只有一个值。计算时通常的做法是,首先将这一系列数的笫1个值保存到结果变量中,然后用一个指针或循环变量从头(或从第2个值)至尾遍历这一系列数,每次比较结果变量和被遍历的值,如果该值比结果大,则将该值保存到结果中。本题中,3行4列二维数组a显然是算法的输入值,而传给函数fun()的3和4在函数中起到限制循环次数的作用,所以它们代表输入数据的行列数.而传递给函数的一维数组b即没有初始化,最后又要输出它,所以数组b肯定是用来保存每行的最大值。在函数中是一个二重循环,外循环首先将ar[i][0]赋给x,然后内循环中比较x和ar[il刚,若x比较小就让 x=ar[i][j],这就说明x是保存结果的临时变量.最后应该将x的值输出到数组b中,也就是形参br的相应位置。故在空格处应该填的内容为br[i]或者写成指针方式*(br+i)。

填空题
单项选择题