B091

01-程序填空题 田少松, 软件154 203浏览

所属年份:2012.3

给定程序中,函数fun的功能是:在3×4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。
例如,有下列矩阵:
1  2  13  4
7  8  10  6
3  5  9   7
程序执行结果为:find:a[2][2]=9
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!

#include  <stdio.h>
#define   M   3
#define   N   4
void fun(int  (*a)[N])
{ int  i=0,j,find=0,rmax,c,k;
  while( (i<M) && (!find))
  {  rmax=a[i][0];  c=0;
     for(j=1; j<N; j++)
       if(rmax<a[i][j]) {
/**********found**********/
         rmax=a[i][j]; c= __1__ ; }
     find=1; k=0;
     while(k<M && find) {
/**********found**********/
       if (k!=i && a[k]<=rmax)  find= __2__ ;
       k++;
     }
     if(find) printf("find: a[%d][%d]=%d\n",i,c,a[i]);
/**********found**********/
      __3__ ;
  }
  if(!find) printf("not found!\n");
}

main()
{ int  x[M][N],i,j;
  printf("Enter number for array:\n");
  for(i=0; i<M; i++)
    for(j=0; j<N; j++) scanf("%d",&x[i][j]);
  printf("The array:\n");
  for(i=0; i<M; i++)
  {  for(j=0; j<N; j++) printf("%3d",x[i][j]);
     printf("\n\n");
  }
  fun(x);
}

【参考答案】

(1)j  
(2)0  
(3)i++

【解题思路】
本题是在矩阵中找出在行上最大、在列上最小的那个元素。
填空1:找出行上最大的数,并将该数的列数j保存在c中,所以应填j。
填空2:使用while循环语句和控制变量find,如果该数不是列中的最小数,那么把find置0,所以应填0。
填空3:i是while的控制变量,所以每做一次循环,该数值要加1,所以应填i++。