问题
单项选择题
以下程序(函数fun只对下标为偶数的元素进行操作)运行后的输出结果是 #include<stdio.h> void fun(int *a, int n){ int i, j, k, t; for(i=0; i<n-1; i+=2){ k=i; for(j=i; j<n; j+=2) if(a[j]>a[k]) k=j; t=a[i]; a[i]=a[k]; a[k]=t; } } main(){ int aa[10]={1, 2, 3, 4, 5, 6, 7}, i; fun(aa, 7); for(i=0; i<7; i++) printf("%d, ", aa[i]); printf("\n"); }
A.7,2,5,4,3,6,1
B.1,6,3,4,5,2,7
C.7,6,5,4,3,2,1
D.1,7,3,5,6,2,1
答案
参考答案:A
解析: 本题考查的是选择排序法。函数fun中,变量i从0开始,每次增加2,变量j从i开始,每次也是增加2,所有循环中只对偶数下标的元素进行了处理。函数fun是一个典型的选择排序法,只不过只对偶数下标的元素进行降序排列,奇数下标的元素不变。发现这一特点后,可以直接写出最后的结果7,2,5,4,3,6,1。