2018年下半年程序员下午试卷案例考试真题答案解析



1
 
说明
设[a1b1],[a2,b2],…,[an,bn]是数轴上从左到右排列的n个互不重叠的区间(a1<b1<a2<b2…<an<bn).以下流程图将一个新的区间[A,B](A<B)添加到上述区间集,形成新的从左到右排列的若千个互不重叠的区间(若A、B落在原有的两个区间,则以原有区间最左端点和最右端点为基准,形成新的区间),最后依次输出这些区间的端点。
例如,给定区间集:[1,2],[4,6],[8,10],[13,15],[17,20],添加区间[5,14]后,依次输出1,2,4,15,17,20,表示合并后的区间集:[1,2],[4,15],[17,20]。
该流程图采用的算法是:先在a1,b1,a2,b2,…,an,bn中扫描定位A点,再继续描定位B点,在扫描过程中随时输出已确定的区间的端点值。
2018年下半年程序员下午试卷案例考试真题答案解析第1张
 
问题:1.1   阅读以下说明和C代码,填写程序中的空(1) ~(5),将解答写入答题纸的对应栏内。
 
 

2
 
【C代码1】
2018年下半年程序员下午试卷案例考试真题答案解析第2张
 
问题:2.1   写出【C代码1】运行时分别输入-1331、795的输出结果。
 
问题:2.2   写出【C代码2】运行时的输出结果。
2018年下半年程序员下午试卷案例考试真题答案解析第3张
 
 

3
 
【说明】
某地电价分三档:
(1)当月用电量不超过180度时,每度电0.5元:
(2)当月用电量超出180度但不超过360度的部分,每度电0.55元:
(3)当月用电量超过360度的部分,每度电0.7元。
例如,某户A一个月的用电量为150度,其电费为150*0.5=75.00元;某户B用电量为280度,其电费为180*0.5+(280-180)*0.55=145.00元;某户C用电量为450度,其电费为180*0.5+(360-180)*0.55+(450-360)*0.7=90.0+99.0+63.0=252.00元
下面程序运行时读入m(m>0)个住户某月的用电量,计算该月每户应缴的电费并输出,同时找出这m个住户中该月的最大用电量和最小用电量。
2018年下半年程序员下午试卷案例考试真题答案解析第4张
 
问题:3.1   阅读以下说明和C代码,填写程序中的空(1) ~(6),将解答写入答题纸的对应栏内。
 
 

4
 
【说明】
函数insertElem 的功能是在元素升序排列的数组中加入一个新元素并保持数组元素升序排列的特点。在main函数中输入若干表示价格的实数,输入为0或负数或实数个数超出限定数量时终止,调用insertElem将价格按升序保存在数组pdata中,最后输出所输入的实数。
2018年下半年程序员下午试卷案例考试真题答案解析第5张
 
问题:4.1   阅读以下说明和C代码,填写程序中的空(1) ~(6),将解答写入答题纸的对应栏内。
 
 

5
 
【说明】
以下Java代码实现一个简单乐器系统,音乐类(Music)可以使用各类乐器(Instrument)进行演奏和调音等操作。对部分乐器进行建模,其类图如图5-1所示,包括:乐器Instrument)、打击乐器(Percussion)、弦乐器(Stringed)、管乐器(Wind)、木管乐器(Woodwind)、铜管乐器(Brass)。2018年下半年程序员下午试卷案例考试真题答案解析第6张

【Java代码】
2018年下半年程序员下午试卷案例考试真题答案解析第7张

 
问题:5.1   阅读以下说明和Java程序,填写程序中的空(1) ~(5),将解答写入答题纸的对应栏内。
 
 

,