选择题
30. 以下程序函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。
void f(intb[],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[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]);
}
程序运行后的输出结果是______。
【正确答案】
B
【答案解析】[考点] 本题主要考查函数的调用。
在main()函数中,两次调用f()函数进行排序,f()函数有三个参数,第一个参数是数组地址,第二个参数是需要排序的数据个数,第三个参数指定排序依据。第一次调用f函数的时候,从第三个元素开始对5个元素进行从大到小的排序,因此调用f()函数转换数组a的值分别为:5,4,7,6,3,2,1,8,9,10;第二次调用f()函数对数组a的前5个元素进行从小到大的排序,因此排序完成后数组a的值变成:3,4,5,6,7,2,1,8,9,10。