问题 单项选择题

以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。
void flint b[],int n,int flag)
int i,j, t;
for(i=0:i<n-1;i++)
for(j=i+1;j<n;j++)
if(flagb[i])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)。

单项选择题
判断题