有下列程序: #include<stdio.h> void fun(int a[],int n,int flag) { int i=0,j,t; for(i=0;i<n﹣1;i++) for(

admin2022-10-25  44

问题 有下列程序:
     #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(e,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个元素,按照flag的值进行排序:当flag为0时,升序排列;当flag为1时,降序排列。main函数中定义数组c,初始化10个元素的值。第1次调用函数fun,flag为1,即将c的下标为0开始的5个元素降序排列。第2次调用函数fun,flag为0,即将c的下标为5开始的5个元素升序排列。所以输出数组c的元素为10,9,8,7,3,1,2,4,5,6。本题答案为B选项。
转载请注明原文地址:https://jikaoti.com/ti/1Gd0FFFM
0

随机试题
最新回复(0)