首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中:其余以此类推。例如:若a所指数组中的数据最初排列为:1、4、2、3、
函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中:其余以此类推。例如:若a所指数组中的数据最初排列为:1、4、2、3、
admin
2019-09-02
49
问题
函数fun的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中:其余以此类推。例如:若a所指数组中的数据最初排列为:1、4、2、3、9、6、5、8、7,则按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5。形参n中存放a所指数组中数据的个数。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#define N 9
/**********found**********/
void fun(int___1___,int n)
{ int i,j,max,min,px,pn,t;
/**********found**********/
for(i=0;i<n-1;i+=___2___)
{ max=min=a
;
px=pn=i;
/**********found**********/
for(j=___3___;j<n;j++)
{ if (max<a[j])
{ max=a[j];px=j;)
if(min>a[j])
{ min=a[j];pn=j;}
}
if(px!=i)
{t=a
; a
=max;a[px]=t;
if(pn==i)pn=px;
}
if(pn!=i+1)
{t=a[i+1];a[i+1]=min;a[pn]=t;}
}
}
main()
{int b[N]={1,4,2,3,9,6,5,8,7},i,
printf("\nThe original data:\n");
for(i=0;i<N;i++)printf("%4d",b
);
printf("\n");
fun(b,N);
printf("\nThe data after moving:\n");
for(2=0;i<N;i++)printf("%4d",
b
);
printf("\n");
}
选项
答案
(1)*a (2)2 (3)i+1
解析
本题中函数的功能是将数组中的元素下标为偶数的元素按照从大到小排序,下标为奇数的元素按照从小到大排序,相当于2个排序过程。在fun函数中,采用选择排序法进行排序,分别用max和min存储每次寻找的最大值和最小值,px和pn记录每次查找到的最大值和最小值的下标位置。
第一空:主函数内fun函数的调用“fun(b,N);”,其中,b为整型数组名,故fun函数的第一参数为整型指针,又根据“max=a
”可知第一个参数名为a,故第一空处为“幸a”。
第二空:根据题意a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中,升序排序和降序排序的下标变化是每次在前一次的基础上+2,即a[0]、a[2]、a[4]…降序排序,a[1]、a[3]、a[5]…升序排序,故第二空应为“2”。
第三空:选择排序法中的升序排序,首先从数组中挑选一个最小的元素,把它和第一元素交换,接着从剩下的n-1个元素中再挑出一个最小的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。故内层循环变量i应该从i+1开始,因此,第三空处应为“i+1”。
转载请注明原文地址:https://www.kaotiyun.com/show/eORp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在___2___处使fa指向函数f1,在___3___处使fb指向函数f2。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=
对长度为n的线性表排序,在最坏情况下,比较次数不是n(n一1)/2的排序方法是
以下叙述中正确的是
若有以下程序#includeintk=7,m=5:voidf(int*s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,*s);}main(){inti=3,*p=&i,*r=&p;f(r
以下函数按每行8个输出数组中的数据:voidfun(int*w,intn){inti;for(i=0;i<n;i++){______________printf("%d",w[i]);}printf
以下叙述中正确的是
s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是
有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是
有下列程序:#includevoidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+1;j<n;j++)if(a[
关于C语言标识符,以下叙述错误的是()。
随机试题
Theflyoveratthecrossingonthe6thringroadisnow______construction.
简化的伯努利方程不能应用于计算
A.头低足高位,头偏向一侧B.去枕平卧位C.平卧位,头偏向一侧D.端坐位E.患侧卧位休克型肺炎病人取
A.麻疹B.风疹C.幼儿急疹D.猩红热E.肠道病毒感染退疹后有色素沉着
某孕妇,孕1产0,孕37周,诊断“中度妊娠高血压综合征”住院治疗。自诉因担心药物影响胎儿发育成长,不愿接受药物治疗,但又怕不服药会使病情加重,威胁胎儿的安全,心情矛盾。在护理中,首先应
关于房地产融资的意义说法错误的是()。
预警系统主要由()两部分组成。
由于下列原因给被拖方带来的损失,承拖方应当负赔偿责任的是( )。
甲公司持有一张由乙公司出票、经丙公司背书转让获得的银行承兑汇票。在该汇票到期后,甲公司向承兑银行提示付款时遭到拒绝,承兑银行拒付的理由是:该汇票上银行的签章是伪造的,该银行并未承兑过这张汇票。甲公司于是向丙、乙公司进行追索,丙公司声称该汇票是乙公司某业务员
在操作性条件作用理论的直接影响下,______风靡全球,成为20世纪第一次世界性的教学改革运动。
最新回复
(
0
)