选择题   若有以下程序
    #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[i]=a[i][0];
          for(j=1;j<N; j++)
            if(flag?(b[i]>a[i][j]):(b[i]<a[i][j]))
          b[i]=a[i][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[i]);
      fun(x,y,0);
      for(i=0;  i<N;  i++)printf ('%d,',  y[i]);
      printf('\n');
    } 
则程序的输出结果是______。
 
【正确答案】 D
【答案解析】[考点] 函数、指针和数组 初始化二维数组,if(flag?(b[i]>a[i][j]):(b[i]<a[i][j]))语句的条件表达式使用了条件运算符,构成选择结构,即flag为真时,以(b[i]>a[i][j])作为条件表达式的值,否则以(b[i]<a[i][j])作为条件表达式的值,fun函数的功能是给一维数组赋值。fun(x,y,1);函数调用后,即当flag为真时,使一维数组获得二维数组第1列的数值;fun(x,y,0);函数调用后,即当flag为假时,使一维数组获得二维数组第4列的数值,得到最终结果为“1,5,9,13,4,8,12,16,”。