有下列程序  #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++)  

admin2022-04-02  36

问题 有下列程序
 #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(a<a[j]):(a>a[j]))
     {t=a;a=a[j];a[j]=t;}
 }
 main()
 {
   int c[10]={7,9,10,8,3,5,1,6,2,4},i;
   fun(c,5,1);
   fun(c+5,5,0);
   for(i=0;i<10;i++)
    printf("%d,",c);
 }
 程序执行后的输出结果是(          )。

选项 A、3,7,8,9,10,6,5,4,2,1,
B、10,9,8,7,3,1,2,4,5,6,
C、10,9,8,7,6,1,2,3,4,5,
D、1,2,3,4,5,10,9,8,7,6,

答案B

解析 程序中函数fun的功能是将数组a的n个元素,按照nag的值进行排序:当flag为。时,升序排列,当flag为1时,降序排列。main函数中定义数组c,初始化10个元素的值。第一次调用函数fun,flag为1,即将c的下标为0开始的5个元素降序排列。第二次调用fun,flag为0,将c的下标为5开始的5个元素升序排列,所以数组c的元素为:10,9,8,7,3,1,2,4,5,6。本题答案为B选项。
转载请注明原文地址:https://jikaoti.com/ti/SOd0FFFM
0

最新回复(0)