若有以下程序 #include <stdio.h> #define N 4 void fun(int a[][N], int b[], int flag) { int i,j; for(i=

admin2020-10-26  17

问题 若有以下程序
     #include <stdio.h>
     #define N 4
     void fun(int  a[][N], int  b[], int  flag)
     {  int  i,j;
        for(i=0; i<N; i++)
        {  b = a[0];
           for(j=1; j<N; j++)
              if (flag ? (b > a[j]) : (b < a[j]))
           b = a[j];
        }
     }
     main( )
     {  int  x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16}, y[N],i;
        fun(x, y, 1);
        for ( i=0; i<N; i++ )  printf("%d,", y);
        fun(x, y, 0);
        for (i=0;i<N; i++)   printf("%d,", y);
        printf("\n");
     }
则程序的输出结果是

选项 A、1,5,9,13,4,8,12,16,
B、4,8,12,16,1,5,9,13,
C、1,2,3,4,13,14,15,16,
D、13,14,15,16,1,2,3,4,

答案A

解析 该题首先初始化二维数组,if (flag : (b > a[j]) : (b < a[j]))条件语句的条件表达式使用了条件运算符构成的选择结构,即flag为真时,以(b > a[j])作为条件表达式的值,否则以(b < a[j])作为条件表达式的值,fun函数功能是给一维数组赋值,fun(x, y, 1);该函数调用后,即当flag为真时,使一维数组获得二维数组第1列的数值;fun(x, y, 0);该函数调用后,即当flag为假时,使一维数组获得二维数组第4列的数值;因此A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/nC3p777K
0

最新回复(0)