阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明】 将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新

admin2009-02-15  32

问题 阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
   将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。
   在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。
   例:序列{6,8,9,1,2,5,4,7,3}
   经重排后成为{3,4,5,2,1,6,8,9,7}
   【函数】
   #include < stdio. h >
   #include < conio. h >
   void jsValue( int a [10] [9] )
   {  int i,j,k,n,temp;
      int b[9];
      for(i=0;i<10;i++)
      {  temp=a [0];
         k=8;n=0;
         for(j=8;j=0;j--)
           {   if(temp < a [j])  (1)=a[j];
               if(temp >a [j])  (2)=a[j];
               if(temp =a [j])  (3)= temp;
           }
           for(j=0;j<9;j++)  a[j] =b[j];
       }
   }
   void main( )
       int a[10] [9] = {{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},
                   {8,2,1,9,3,5,4,6,7}, {3,5,1,2,9,8,6,7,4},
                   {4,7,8,9,1,2,5,3,6}, {4,7,3,5,1,2,6,8,9},
                   {9,1,3,5,8,6,2,4,7}, {2,6,1,9,8,3,5,7,4},
                   {5,3,7,9,1,8,2,6,4}, {7,1,3,2,5,8,9,4,6}
       };
       int i,j;
         (4);
       for(i=0;i<10;i++) {
           for(j=0;j<9;j++) {
               printf("%d",a [j] );
               if((5))printf(",");
           }
           printf(" \n" );
       }
       getch( );
   }

选项

答案(1)b[k--] (2)b[n++] (3)b[n] (4)jsValue(a) (5)j<=7

解析 在主函数中先要调用函数jsValue()对数组a进行处理,所以(4)空应填入“jsValue(a)”。然后输出数组元素,同一行的元素之间用逗号分隔,所以(5)空应填入“j<=7”。
   函数jsValue()是将数组按题目要求进行排序。通过观察发现处理后的数组中元素的顺序与原来的顺序相反,并且每一行中没有与第一个数相同的数,所以是从后往前处理,也就是将每组从最后往前倒序逐个问第一个数比较,比它大的就放到临时数组b中的最后,比它小的就放到临时数组b中的最前面,以次类推,所以(1)空应填入“b[k- -]”,(2)空应填入“b[n++],(3)空应填入“b[n]”。最后将b数组赋给a数组。
转载请注明原文地址:https://kaotiyun.com/show/jbjZ777K
0

最新回复(0)