以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumCol

admin2010-05-22  55

问题 以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。
   #define    M    2
   #define    N    4
   void SumColumMin(int  a[M][N],int  *sum)
   {   int  i,j,k,s=0;
       for(i=0;i<N;i++)
   {   k=0;
       for(j=1;j<M;j++)
       if(a[k]>a[j])k=j;
       s+= 【  】;
   }
        【  】=s;
      }
   main()
   {    int  x[M][N]={3,2,5,1,4,1,8,3},s;
   SumColumMin( 【  】);
   printf("%d\n",s);
   }

选项

答案a(k][i] *sum x,&s

解析 函数SumColumMin()两个参数,第一个参数为数组名,第二个参数为一个指针,用来访问存放数组中每列元素中的最小值的存储空间的变量。所以在主函数中调用 SumColumMin()函数,应该将数组x和sum作为实参传给SumColumMin()中的形参,故第 20个空格处应该填x,&s。在SumColumMin()函数中用了两重循环,用N记录数组的列, M记录数组的行。内循环共循环了M次,每循环一次将a[k]比较a[j](当k=0时,a[k]第一行第一列的值,然后将该值依次和第一列中的每个值比较,让a[k]表示较小的值,那么比较到最后一个元素后a[k]就是该列中最小元素的值),让k记录较小值元素的行下标,这样通过M次循环得到每列中的最小元素,然后退出内循环,继续执行该次外循环里的其他语句,即将刚求的第i列的最小值a[k]累加到s中,故第18个空格处应该填a[k],最后外循环共循环N次,将每列的最小值累加到s中,退出循环,然后让指针sum所指向的存储空间的值为s故第19个空格处应该填*sum。
转载请注明原文地址:https://kaotiyun.com/show/bCWp777K
0

随机试题
最新回复(0)