问题 单项选择题

有以下程序:
main()
{int a[4][4]={(1,4,3,2),(8,6,5,7),(3,7,2,5),(4,8,6,1)},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+i;k<4;k++)
if(a[j][i]>a[k][i]}
{t=a[j][i]:a[j][i]=a[k][i];=a[k][i]=t;}/*按列排序*/
for(i=0;i<4:i++)
printf(“%d,”a[i][i]);

程序运行后的输出结果是( )。

A.1,6,5,7,

B.8,7,3,1,

C.4,7,5,2,

D.1,6,2,1,

答案

参考答案:A

解析: 题目中首先定义了一个二维数组a,并初始化为:
|1 4 3 2|
|8 6 5 7|
|3 7 2 5|
|4 8 6 1|
然后通过三重循环对数组a实行按列排序。从if(a[j][i]>a[k][i])“当前面的元素大于后面的”则交换可以看出,排序是从小到大的,所以排序结束后,数组a的内容应该是:
|1 4 2 1|小
|3 6 3 2| |
|4 7 5 5| ↓
|8 8 6 7|大
最后通过一个for循环,依次输出:a[0][0],a[1][1],a[2][2],a[3][3]的值,即输出1,6,5,7。

单项选择题
选择题