问题 单项选择题

以下程序中函数f的功能是: 当flag 为1时,进行由小到大排序;当flag 为0时,进行由大到小排序。
void f(int b[], int n, int flag)
int i, j, t;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if(flag b[!]>[j]: b[i]<b[j])
t=b[i]; b[i]=b[j]; b[j]=t; main ()
int a[10]=5,4,3,2,1,6,7,8,9,10, i;
f(&a[2], 5, 0);
f(a, 5, 1),
for (i=0; i<10; i++)
printf("%d,", a[i]);程序运行后输出结果是( )。

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

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

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

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

答案

参考答案:B

解析: 题目中先后两次调用了函数f()。第1次,使用参数“&a[2],5,0”表示从数组a下标为2的元素开始,对其后的5个元素进行由大到小排序。所以排序结果是{5,4,7,6,3,2,1,8,9,10)。第2次,使用参数“a,5,1”表示从数组a的首元素开始,对其后5个元素进行由小到大排序。所以排序结果是 {3,4,5,6,7,2,1,8,9,10)。故本题应该选择B。

单项选择题
问答题 简答题