单选题
有以下程序
#include<stdio.h>
void fun(int a[],int n,int flag)
{int i=0,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(flag)
{if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
else
{if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
}
main()
{int c[10]={7,9,10,8,3,5,1,6,2,4},i;
fun(c,10,0);
fun(c,5,1);
for(i=0;i<10;i++)
printf("%d,",c[i]);
}
程序运行结果正确的是______。
【正确答案】
B
【答案解析】[解析] 题意中,fun()函数的作用是:将数组a中,前n个元素,按照flag来排序,当flag为true(非0)时,降序排列;当flag为false(0)时,升序排列;main()函数中,两次调用fun()函数,第一次传入数组元素个数为10,flag为0,所以第一次fun()函数的调用,将数组c中的前10个元素升序排列;第二次传入数组元素个数为5,flag为1,所以第二次fun()函数的调用,将数组c中的前5个元素降序排列,两次调用后,数组c的元素顺序如下:5,4,3,2,1,6,7,8,9,10,本题答案为B。