问题 单项选择题

有以下程序:
#include <stdio. h>
main ( )
int x[ ] = 1,3,5,7,2,4,6,0 ,i,j,k;
for(i =0;i<3;i ++ )
for (j =2;j> = i;j — )
if( x[j + 1 ] > x[j] ) k = x[j] ;x[j] = x[j + 1 ] ;x[j + 1 ] = k;
for (i =0;i<3;i++)
for(j =4;j <7-i;j ++)
if(x[j] >x[j+1]) k=x[j];x[j] =x[j+1];x[j+1] =k;
for (i=0;i<8;i ++) printf("%d" ,x[i]);
prinff("\n" );程序运行后的输出结果是( )。
A)75310246 B) 01234567 C) 76310462 D)13570246

答案

参考答案:A

解析: 本题考查的是排序算法。
for(i=0;i<3;i++)
for(j=2;j>i;j--)
if(x[j+1],x[j]){k=x[j];x[j];x[j+1);x[j+1]=k;}
该段程序的作用是将数组元素x[0]~x[3]中的数由大到小排列,得到x[]{7,5,3,1,2,4,6,0}。
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
该段程序的作用是将数组元素x[4]~x[7]中的数由小到大排列,得到x[]={7,5,3,1,0,2,4, 6}。因此输出结果为75310246。

单项选择题
单项选择题 A1/A2型题