若有以下程序 #include #defineN4 voidfun(inta[][N],intb[],intflag) {inti,j; for(i=0;i<N;i++) {b[i]=a[0][i]; for(j=1;j<N;j++) if(flag?(b

admin2015-07-31  35

问题 若有以下程序
#include
#defineN4
voidfun(inta[][N],intb[],intflag)
{inti,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()
{intx[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、4,8,12,16,1,5,9,13,
B、1,2,3,4,13,14,15,16,
C、1,5,9,13,4,8,12,16,
D、13,14,15,16,1,2,3,4,

答案B

解析 该题首先初始化二维数组,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行的数值;因此B选项正确。
转载请注明原文地址:https://jikaoti.com/ti/5gi0FFFM
0

最新回复(0)