问题 单项选择题

以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序:
float sort(int a[], int n)
int i, j, t;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(a[i]<a[j])t=a[i]; a[i]=a[j]; a[j]=t;

main()
int aa[10]=1, 2, 3, 4, 5, 6, 7, 8, 9, 10), i;
sort(&aa[3], 5);
for(i=0; i<10; i++)printf("% d", aa[i]);
printf("\n");

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

A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10

B.10, 9, 8, 7, 6, 5, 4, 3, 2, 1

C.1, 2, 3, 8, 7, 6, 5, 4, 9, 10

D.1, 2, 10, 9, 8, 7, 6, 5, 4, 3

答案

参考答案:C

解析: 本题考查数组名作为函数形参的函数调用问题。数组名作函数形参是按地址传递,形参的改变可以传回实参。sort函数的两个形参中一个是数组名,sort函数的功能是对数组元素进行由大到小的排序。主函数调用sort函数时,实参为aa[3]元素的地址和整数5,即sort函数将对数组aa中的元素aa[3]、aa[4]、aa[5]、aa[6]、aa[7]5个元素的值进行由大到小的排序,排序后aa[3]=8、aa[4]=7、aa[5]=6、aa[6]=5、aa[5]=4,而数组aa中其余元素的值不变,因此结果是C。

阅读理解与欣赏
单项选择题 A1型题