(31)以下程序中函数f的功能是:当flag为1时,进行有由小到大排序;当flag为0时,进行由大到小排序。
void f(int b[],int n,int flag)
{int i,j,t;
for(i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if(flag?b[i]>b[j]:b[i]<b[j]) {t=b[i];b[i]=b[j];b[j]=t; }
}
main()
{int a[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&a[2],5,0); f(a,5,1);
for(i=0;i<10;i++) printf(“%d,”a[i]);
}
程序运行后的输出结果是(B)
A)1,2,3,4,5,6,7,8,9,10,
B)3,4,5,6,7,2,1,8,9,10,
C)5,4,3,2,1,6,7,8,9,10,
D)10,9,8,7,6,5,4,3,2,1,
此题中f(&a[2],5,0); 是从a数组的第3个元素开始执行函数,进行排序;
二f(a,5,1);不是应该把整个a数组都排序一遍吗?
这样不管前面如何排,到后来不应该就是整个的从小到大嘛?
为什么不选(A)?
谢谢高手们~!
求助“全国计算机二级C语言 ”中一题!!!
答案:4 悬赏:40 手机版
解决时间 2021-03-06 18:05
- 提问者网友:末路
- 2021-03-06 00:33
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-03-06 01:41
题目中对于函数f(int b[],int n,int flag)的描述并不准确,没有说第二个参数n是干嘛的,所以需要你自己看一下这个函数是怎么工作的
n代表是被排序的数组长度,或者说要排序的数的个数限制
也就是说,这个函数的功能是只,对b[]开始的数组的前n个元素排序,flag决定排序方式
f(&a[2],5,0)就是从第三个数开始,对后面的5个数从大到小排
f(a,5,1)就是从第一个数开始,对后面的5个数从小到大排
所以结果是B
n代表是被排序的数组长度,或者说要排序的数的个数限制
也就是说,这个函数的功能是只,对b[]开始的数组的前n个元素排序,flag决定排序方式
f(&a[2],5,0)就是从第三个数开始,对后面的5个数从大到小排
f(a,5,1)就是从第一个数开始,对后面的5个数从小到大排
所以结果是B
全部回答
- 1楼网友:舊物识亽
- 2021-03-06 03:52
f(&a[2],5,0)只对从第3个元素开始的5个数进行排序,看清楚些
f(&a[2],5,0)运行后数组变为5,4,7,6,3,2,1,8,9,10
f(a,5,1)对前5个数由小到大排列变成3,4,5,6,7,2,1,8,9,10
- 2楼网友:鱼忧
- 2021-03-06 02:24
void f(int b[],int n,int flag)
int n指对多少个元素排序。
- 3楼网友:第四晚心情
- 2021-03-06 02:03
需要重新考试 比如说你是今年的四月过了笔试,那你必须今年九月接着报机试才行,而且你只有九月的机试过了才能拿到三级证,如果没有,那就所有的成绩都为零,因为计算机等级考试单科成绩只保留一次,而且必须是相邻的两次考试才行,所以你得报今年九月份的全国计算机网络技术考试了。如果你等到2008你四月,那你的笔试成绩已经自动清零了。 所以这次你需要考笔试和上机两个
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯