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

admin2009-01-15  29

问题 以下程序中,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);
      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[0];
         for(i=0;j<n;j++)  if(x<ar[j])  x=ar[j];
           ______=X;
      }
   }

选项

答案br[i]或*(br+i)

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

最新回复(0)