问题 单项选择题

以下程序中函数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(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

解析: 在main()中,“f(&a[2],5,0);”语句的功能是对数组a[10]中从a[2]到a[6]的数宇(即3,2,1, 6,7)进行从大到小排序,这时数组a[10]中的数字序列变为{5,4,7,6,3,2,1,8,9,10}。“f(a,5,1);”语句的功能是对数字序列{5,4,7,6,3,2,1,8,9,10}中的5,4,7,6,3进行从小到大的排序,所以数组a[10]中的数字序列最终变为{3, 4,5,6,7,2,1,8,9,10}。

单项选择题 A1型题
问答题 简答题