2020年11月程序员模拟题下午(一)之七
摘要:对于【程序员】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2020年11月程序员模拟题下午(一)】部分试题的详解,一起来看看吧~1、阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏中。 [说明]
1、阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏中。 [说明]函数int find_Max_Min(int a[],int n)的功能是:找出n个元素的数组a中的最大元素和最小元素并输出,返回查找过程中元素的比较次数。查找方法如下:比较a[0]和a[n-1],若a[0]大,则交换a[0]和a[n-1]的值:再比较a[1]和a[n-2],若a[1]大,则交换a[1]和a[n-2]的值;以此类推,直到所有的元素都比较完。然后在数组的前半区从前往后找出小元素,在后半区从后往前找出大元素。 [函数] int find_Max_Min(int a[],int n) {/*找出n个元素的数组a的最大、最小元素并输出,返回查找过程元素中的比较次数*/ int i,Count=0; int temp,Maxnum,Minnum; for(i=0; i<n/2; i++){ Count=Count+1 /*元素比较次数计数*/ if(a[i]>a[(1)]) {/*数组元素交换代码略*/} } Maxnum=a[n-1]; Minnum=a[0]; for(i=1;i<n/2+n%2;i++){ Count=(2); /*元素比较次数计数*/ Minnum=(3)? a[i]:Minnum; /*找最小元素*/ Maxnum=(4)?(5):Maxnum; /*找最大元素*/ } printf("Max=%d\n",Maxnum); printf("Min=%d\n",Minnum); return Count; }
答案:
(1)n-i-1
(2)Count+2
(3)a[i]<Minnum
(4)a[n-i-1]>Maxnum
(5)a[n-i-1]
答题解析:
解析:先分析第一个for语句。
for(i=0; i<n/2; i++){
Count=Count+1; /*元素比较次数计数*/
if(a[i]>a[ (1) ])
{/*数组元素交换代码略*/)
}
根据函数int find_Max_Min(int a[],int n)的功能以及题于中描述的查找方法,可知经过第一个for循环后,数组a中的元素被分成了前半区(最小元素所在区域)和后半区 (最大元素所在区域)。由于元素a[0]与a[n-1]比较,a[1]与a[n-2]比较,由于i值随循环的变化规律是0,1,2,…,因此空(1)处应填入n-1-1。
再分析第二个for语句,此前先假设a[n-1]为最大元素Maxnum,a[0]为最小元素 Minnum。
for(i=1;i<n/2+n%2;i++){
Count= (2) ; /*元素比较次数计数*/
Minnum= (3) a[i]:Minnum; /*找最小元素*/
Maxnum= (4) (5) :Maxnum; /*找最大元素*/
}
显然,同一个循环中在前半区查找最小元素,在后半区查找最大元素,元素比较次数计数器count的值随循环每次增加2。由于i值的变化规律为0,1,2,…,因此空(3)处填入“a[i]<Minnum”,结合“ a[i]:Minnum” 表示找到更小元素a[i]时用a[i]更新 Minnum的值:同理,在后半区找到更大元素时更新Maxnum的值,题干中已经明确在后半区从后往前找出大元素,因此空(4)处应填入“a[n-I-1]>Maxnum”,空(5)处填入“a[n-i-1]”。
查看完整试题>>>
软考资料: 2024年软考论文范文> 软考考试核心重点难点汇总> 查看更多>
备考刷题:章节练习+每日一练> 软考历年试题+模拟题>查看更多>