有以下程序 #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

admin2021-04-28  33

问题 有以下程序
#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<a[J])
{t=a;a=a[j];a[j]=t;}
}
else
{if(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,10,0);
fun(c,5,1);
for(i=0;i<10;i++)
printf("%d,",C);
}
程序运行结果正确的是(    )。

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

答案B

解析 题意中,fun()函数的作用是:将数组a中,前n个元素,按照nag来排序,当nag为true(非0)时,降序排列;当nag为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。
转载请注明原文地址:https://kaotiyun.com/show/R3tp777K
0

最新回复(0)