下面程序段的执行结果是( )。 main() {int a[5][5],i,j; for(i=1;i<5;i++) for(j=1;j<5;j++) a[i][j]=(i<j)*(j/i); for(i=1;i<5;i

admin2010-01-10  18

问题 下面程序段的执行结果是(  )。    main()    {int a[5][5],i,j;    for(i=1;i<5;i++)    for(j=1;j<5;j++)    a[j]=(i<j)*(j/i);    for(i=1;i<5;i++)    {  for(j=1;j<5;j++)    printf("%2d",a[j]);    printf("\n");    }    }

选项 A、1111          1111    1111    1111
B、0001    0010    0100    1000
C、1000    0100    0010    0001
D、0000    0000    0000    0000

答案4

解析 本题使用一个双重循环对—个二维数组的一部分赋值(下标中含0的元素不赋值),赋值表达式是a[j]=(i/j)*(j/i)。因为i和j都是正整数,所以当i大于j时,j/i为0,当i小于j时,i/j为0,而0乘以任何数都为0,故表达式(i/j)*(j/i)在i和j不相等时的值为0。当i和j相等时,i/j和j/i的值都为1,所以表达式(i/j)*(j/i)的值为1。故二维数组中的a[1][1]、a[2][2]、 a[3][3]、a[4][4]被赋为1,其余下标不含0的元素被赋为0。故应该选择C。
转载请注明原文地址:https://kaotiyun.com/show/XHWp777K
0

最新回复(0)