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

admin2021-07-09  24

问题 有以下程序:
#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,4,1);
fun(c+4,6,0);
for(i=0;i<10;i++)printf("%d,",c);
printf("\n");
}
程序运行后的输出结果是(    )。

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

答案C

解析 fun()函数作用冒泡法排序,flag控制升序(0)或者降序(1)。n为参与排序的元素个数。a为数组的起始地址。因此,fun(a,4,1),数组的前四个降序排序,fun(a+4,6,0)对数组的第四项后六个元素进行升序排序。故结果为10,9,8,7,1,2,3,4,5,6。答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/Ndtp777K
0

最新回复(0)