阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 如果矩阵A中的元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。 一个矩阵可能存在多

admin2013-07-03  39

问题 阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。
    【说明】
    如果矩阵A中的元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。
    一个矩阵可能存在多个马鞍点,也可能不存在马鞍点。下面的函数用来求解并输出一个矩阵中的所有马鞍点,最后返回该矩阵中马鞍点的个数。
    【C函数】
    Int findSaddle(int a[][N],int M),
    {  /*a表示M行N列矩阵,N是宏定义符号常量*/
        int row,column,i,k;
        int minElem:
        int COUrtt=0;/*count用于记录矩阵中马鞍点的个数*/
                 for(row= 0;row<   (1)   ;row++)    {
          /*minElem用于表示第row行的最小元素值,其初值设为该行第0列的元素值*/
      (2)   
          for(column= 1;columN<    (3)   ;column++)
           if(minElem>a[row][column])    {
             minElem= a[row][column];
           }
                 for(k=0;k<N;k++)
           if(a[row][k]= =minElem){
              /*对第row行的每个最小元素,判断其是否为所在列的最大元素*/
              for(i=0;i<M;i++)
                if(  (4)  >minElem)break;
                        if(i>=  (5)  ){
                printf(”(%d,%d):%d\n”,row,k,minElem);/*输出马鞍点*/
                count++:
              }/ * if * /
          }/ * if * /
     }/ * for * /
     return count.
     }/ * findSaddle * /

选项

答案(1)M (2)minElem=a[row][0]或其等价形式 (3)N (4)a[i][k]或其等价形式 (5)M

解析 本题考查考生综合运用C语言的知识解决实际问题的能力。
    根据题目的描述,马鞍点A[i,j]为矩阵第i行中值最小的元素,且又是第j列中值最大的元素。(1)处的for循环实现对所有行进行遍历,而矩阵a共有M行,因此,(1)处应填入M。
    根据程序段中提供的注释,(2)处用于设置第roW行的最小元素值,且其初值设为该行第0列的元素值。因此,(2)处应填入minElem=a[row][0]。
    类似的思路,(3)处的for循环实现对所有列进行遍历,而矩阵a共有N行,因此,(3)处应填入N。
    根据程序段中提供的注释,(4)和(5)处实现对第row行的每个最小元素,判断其是否为所在列的最大元素,因此,(4)处应填入a[k]。(5)处所在的if判断条件用于判断行是否比较结束,因此应填入M。
转载请注明原文地址:https://kaotiyun.com/show/cnjZ777K
0

相关试题推荐
最新回复(0)