有下列程序: main( ) { int a[4][4]={{l,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+1;k

admin2018-10-16  31

问题 有下列程序:
main( )
{  int a[4][4]={{l,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+1;k<4;k+ +)
if(a[j]>a[k]){t=a[j];a[j]=a[k];a[k]=t;}  /*按列排序*/
for(i=0;i<4;i+ +)printf("%d,",a);
}
程序运行后的输出结果是

选项 A、8, 7, 3, 1,
B、1, 6, 5, 7,
C、4, 7, 5, 2,
D、1, 6, 2, 1,

答案B

解析 最外层的for语句的自变量i是列下标,而内部的两个for语句的自变量j和k是行下标。所以由程序段可知,这是利用三重循环对二维数组a[4][4]的元素按列从小到大进行排序,所以最后排完序的结果为a[4][4]={{1,4,2,1},{3,6,3,2},{4,7,5,5},{8,8,6,7}},最后一个for语句的功能是输出数组a[4][4]主对角线上的元素,因而输出为1,6,5,7。
转载请注明原文地址:https://kaotiyun.com/show/Oyxp777K
0

最新回复(0)