永发信息网

求助“全国计算机二级C语言 ”中一题!!!

答案:4  悬赏:40  手机版
解决时间 2021-03-06 18:05
  • 提问者网友:末路
  • 2021-03-06 00:33
(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)?

谢谢高手们~!
最佳答案
  • 五星知识达人网友:三千妖杀
  • 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
全部回答
  • 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你四月,那你的笔试成绩已经自动清零了。 所以这次你需要考笔试和上机两个
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯