上半年软考程序员下午真题及答案wordWord文档下载推荐.docx
- 文档编号:18721947
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:12
- 大小:117.53KB
上半年软考程序员下午真题及答案wordWord文档下载推荐.docx
《上半年软考程序员下午真题及答案wordWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《上半年软考程序员下午真题及答案wordWord文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
mul=1;
__
(2)__;
while(m>
O){
d=m%10;
m=__(3)__;
result=result+(__(4)__)*mul;
mul=__(5)__;
}
returnresult;
}
试题三(共15分)
阅读以下说明和C语言函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
函数boolDel_elem(STACK*S,charpara_ch)的功能是:
删除栈*s中与para_ch之值相等且最接近栈顶的元素(字符),若栈中不存在该元素,则函数返回FALSE,否则返回TRUE。
其中,STACK是栈的类型名。
函数Del_lem实现上述功能的方法是c利用栈的基本操作,先将栈*s中所有比parlch之值更接近栈顶的元素暂时存放在临时工作栈s_bak中,使得与para_ch之值相等的元素成为栈顶元素,此时执行出栈操作,即从栈中删除与para_ch之值相等的元素,最后再将s_bak中的元素依次存回栈*s。
在函数Del_elem中必须使用栈的基本操作进行栈上的运算,实现栈的基本操作的
函数原型说明如下;
voidInitStack(STACK*S):
初始化栈。
voidPush(STACK*S,chare):
将一个字符压栈,栈中元素数目增1。
voidPop(STACK*S);
栈顶元素出栈,栈中元素数目减1。
charTop(STACKS):
返回非空栈的栈顶元素值,栈中元素数目不变。
boolIsEmpty(STACKS);
若S是空栈,则返回TRUE:
否则返回FALSE。
bool类型定义如下:
typedefenum{FALSE=0,TRUE=1}bool;
boolDel_elem(STACK*S,charpara_ch)
STACKs_bak;
/*定义临时工作栈s_bak*/
charCh;
booltag=FALSE;
__
(1)__;
/*初始化临时工作栈s_bak*/
/*将栈*s中所有比para_ch更接近栈顶的元素暂时存放在临时工作栈s_bsk中*/
while(!
IsEmpty(*s)){
ch=___
(2)___;
/*取栈顶元素:
/
Pop(S);
if(Ch=para_ch){
tag=TRUE:
break;
}
___(3)___;
/*将暂存于1临时工作栈s_bak中的元素存回栈*s*/
while(___(4)___){
Ch=Top(s_bak);
___(5)___;
Push(s,ch);
returntag;
}
从下列的2道试题(试题四至试题五)中任选1道解答。
如果解答的试题数超过1道,则题号小的1道解答有效。
试题四(共15分)
某工厂A负责为某大型企业B加工零件,A每天必须为B提供一定数量的零件。
由于某种客观原因,A每天生产的零件的单价都不相同。
若A某天生产的零件数多于B需要的数目,则多余的零件可以放到第二天及以后再使用,但需要收取每个零件的保管费(产品单价之外附加的费用),每个零件在不同日期收取的保管费也不相同。
例如,在5天的生产中,B要求的零件需求量及A核算出的零件单价和保管费用如表1所示:
注:
(1)计划1的总费用:
25*20+15*30+30*32+35*25+30*35=3835(元)
(2)计划2的总费用:
40*20+15*4.5+30*32+50*25+15*5.5+15*35=3685(元)
(3)计划3的总费用:
70*20+45*4.5+30*8+65*25+30*5.5=3632.5(元)
(4)计划4不可行,虽然第一天和第二天生产的零件总数比需求量多5个,但加上第三天生产的20个零件(共25个),仍不能满足B第三天的需求量(30个)。
函数finla_plan(FILE*in)的功能是:
从文件中读入若干个生产计划,从可行的计划中选出费用最小者,记录该生产计划并返回该最小费用。
全局结构体数组data[]用于保存表1所示的数据(data[0]不用),说明如下:
data[i].Qty_req:
int型,表示第i天的零件需求量。
data[i].Price:
double型,表示第i天生产的零件单价(元)。
data[i].Keeping_fee:
double型,表示第i天保管单个零件的费用(元)。
intB_s[DAYS+1];
/*扫记录成本最小的生产计划,ls[0]不用,DAYS定义为天数*/
doublefind_a_plan(FILE*inf)
{intPnum[DAYS+1],acc_req[DAYS+1]:
inti,tag=0,acc_qty=0;
doublemincost=1.0e20,costProduce,cost_Keep;
for(i=1;
i<
=DAYS;
i++){ /*到第i天时的累计零件需求量存入acc_req[i]*/
accjty+=data[i].Qty_req;
acc_req[i]=acc_qty;
}
while(!
feof(inf)){
for(i=1;
=DAYS;
i**) /*读入一个生产计划,第i天的产量存入P_num[i]*/
if(!
feof(inf))
fscanf(inf,*"
%d"
&
P_num[i]);
tag=0;
cost_Produce=0;
cost_Keep=0:
for(i=1,___
(1)___;
i++){ /*考察当前的生产计划*/
acc_qty+=P_num[i]);
/*acc_qty计录到第i天时的累计零件生产量*/
if(acc_qty<
acc_req[i]){ /*当前生产计划不能满足需求*/
tag=1;
break;
}/*if*/
cost_Produce+=___
(2)___;
/*计算当前生成计划的总零件价格*/
/*计算当前生成计划下的零件保管费*/
cost_Keep += (___(3)___) * data[i].Keeping_fee;
}/*for*/
if(___(4)___) /*若当前生产计划不可行,则继续读取下一计划*/
continue;
if(___(5)___){ /*记录成本更小的生产计划*/
mincost=cost_Produce+cost_Keep;
i++)
B_s[i]=P_num[i];
}/*while*/
returnmincost;
}
试题五(共15分)
阅读以下应用说明以及用VisualBasic开发过程中所编写的程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
[应用说明]
某应用程序在运行过程中的一个界面如下图所示:
在“供选课程”列表框(名为Listl)中选择某个课程后,再单击“>
*按钮(名称为cmdSelect),就能将该课程复制到“所选课程”列表框(名称为List2)中(但要注意不要出现重复项);
如果单击“>
>
”按钮(名称为cmdSelAll),就能将全部供选课程名复制到列表框List2中(注意应先删除List2中的已选项);
如果在“所选课程”列表框中选中某个课程,再单击“<
”按钮(名称为cmdDelete),就会从List2中删除该课程(未选课程时应不做处理):
如果单击“<
<
”按钮(名称为cmdDelAll),就会从List2中删除所有已选课程。
[VisualBasic程序代码]
PrivateSubCmdSelect_Click()
Fori=0TOList2.ListCount-1
IfList1.Text=Lsit2.List(i)ThenExitSub‘不要重复选择
Nexti
List2.Addltem___
(1)___ ‘在List2中增添List1中所选的项
EndSub
PrivateSubCmdSelAll_Click()
List2.Clear ‘先删除List2中的已有项
Fori=0To___
(2)___ ‘对List1中所有各项做循环处理
List2.Addltem___(3)___ ‘将该项增添到List2中
PrivateSubCmdDelete_Click()
IfList2.ListIndex>
=0Then ‘如果List2中有选中的项
List2.Removeltem___(4)___ ‘则删除所选的项
EndIf
PrivateSubCmdDelAll_Click().
___(5)___
从下列的3道试题(试题六至试题八)中任选1道解答。
试题六(共15分)
阅读以下说明和C++代码,将解答写在答题纸的对应栏内。
已知类SubClass的getSum方法返回其父类成员与类SubClass成员j的和,类SuperClass中的getSum为纯虚拟函数‘程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。
[C++代码]
行号 代码
O1 #include<
iostream>
02 usingnamespacestd;
03 classSuperClass{
04 private:
05 inti;
06 public:
07 SuperClass(){i=5;
}
08 virtualihtgetValueO{returni;
}
09 virtualintgetSum()=0;
lO };
11 classSubClass:
publicSuperClass{
12 intj;
13 public:
14 SubClass(intj):
j(0){
15 ___
(1)___=j;
//用参数j的值更新数据成员
16 };
17 intgetValue(){returnj;
18 intgetSum(){
19 return___
(2)___getValue()+j;
20 }
21 };
22 voidmain(void){
23 SuperClasss=newSubClass(-3);
24 cout<
s->
getValue()<
"
;
25 cout<
getSum()<
endl;
26 deletes;
27 }
试题七(共15分)
阅读以下应用说明以及用VisualBasic开发过程中进行的属性设置和所编写的程序代码,将应填入__(n)__处的字句写在答题纸的对应栏内。
启动某应用程序后,其运行窗口左边会出现两只蝴蝶,下边有“启动”和“停止’两个按钮。
单击“启动”按钮后,伴随“两只蝴蝶”音乐,两只蝴蝶会分别沿两条互绞的曲线,自左至右翩翩飞行(见下图),而且飞出窗口右边后又会再从窗口左边飞入。
单击“停止”按钮时,两只蝴蝶停止飞行,回到初始状态,音乐也同时停止。
再单击“启动”按钮时,蝴蝶重新开始伴音飞行。
在开发该应用时,两只蝴蝶用两个图像框来表示,分别命名为Imagel和Image2,其Picture属性分别设置为各个蝴蝶的图像文件名,其stretch属性都应设置为__
(1)__,使图像能自动改变大小以适应图像框。
再在窗体中建立“启动”按钮(名为CmdStart)和“停止”按钮(名为CmdStop)。
蝴蝶所飞行的路线分别用正弦和余弦曲线描述。
为此,首先需要用Scal方法对窗体定义坐标系统。
设左上角坐标为(0,0),右下角坐标为(20,6)。
蝴蝶1的飞行曲线设为;
yl=2+sinx,蝴蝶2的飞行曲线设为:
y2=2+cosx。
蝴蝶飞行的位置坐标(x,y)确定了蝴蝶图像框的位置(Left属性值和Top属性值)。
设置一个定时器(名为timerl),其定时时间间隔为0.1秒,所以其Interval属性值应设置为100。
每隔 0.1秒需要对两个图像框的位置进行一次调整。
初始时,该定时器的Enabled属性应设为False(关闭状态)。
为使该应用程序运行时能播放声音文件,在开发时应利用菜单“工程-部件”,选择加载组件“MicrosoftMultimediaControl6.0”,并在窗体中设置多媒体控件(设命名为MC)。
由于不需要用户控制,其Visible属性可设置为False(不可见)。
右击该控件,可选择该控件中各按钮的属性,应注意选择“播放”有效、“停止”有效。
“两只蝴蝶”的音乐文件应提前准备好,并通过某种音频处理程序将其转换成WAV格式,存放在开发该应用的当前目录中。
Dim__
(2)__
'
声明全局变量
PrivateSubForm_Load()
Scale(0,0)-(20,6) '
定义窗体的坐标系统
PrivateSubCmdStart_Click()
x=0
MMC.DeviceType="
WaveAudio"
'
设置多媒体设备类型
MMC.FileName="
两只蝴蝶.way"
'
确定声音文件名
MMC.Command="
Open"
'
打开多媒体设备
MNC.Command="
Play"
启动声音的播放
Timerl.Enabled=True
EndSub '
打开定时器
PrivateSubTimerl_Timer()
Ifx>
20Thenx=x-20 '
蝴蝶飞到右边界后再回到左边界
Imagel.Left=x '
动态调整蝴蝶框的位置
Imagel.Top=__(3)__
Image2.Left=x
Image2.Top=__(4)__
x=x+0.1 '
确定蝴蝶下一步飞行位置
PrivateSubCmdStop_Click()
__(5)__
Imagel.Left=0 '
蝴蝶位置初始化
Imagel.Top=2
Image2.Left=0
Image2.Top=3
MMC.Command="
Stop"
停止播放
Close"
'
关闭多媒体设备
试题八(共15分)
阅读以下说明和Java代码,将解答写在答题纸的对应栏内。
已知类SubClass的getSum方法返回其父类成员i与类SubClass成员j的和;
类SuperClass中的getSum为抽象函数,程序中的第14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,当程序运行到第22行且尚未执行第22行语句时成员变量i的值,最后给出程序运行后的输出结果。
[Java代码]
行号 代码
01 publicclassUainJava{
02 publicstaticvoidmain(String[]args){
03 SuperClasss=newSubClass();
04 System.out.println(s.getValue());
05 System.out.println(S.getSum());
06 }
07 }
08 abstractclassSuperClass{
09 privateinti;
10 publicSuperClass(){i=5;
11 publicintgetValue(){
12 returni;
13 }
14 publicfinalabstractintgetSum();
15 }
16 classSubClassextendsSuperClass{
17 intj;
18 publicSubClass(){
19 this(-3);
21 publicSubClass(intj){
22 ___
(1)___.j=j;
23 }
24 publicintgetValue(){returnj;
25 publicintgetSum(){
26 return___
(2)___.getValue()+j;
27 }
28 }
参考答案
试题一
[问题1]
001
010
100
[问题2]
aba
bcb
aba
[问题3]
(1)B(j,n-i+1)
(2)C(n-i+1,n-j+1)
(3)A(n-j+1,i)
试题二
(1)num/10000>
0
(2)result=0
(3)m/10
(4)d*10+d
(5)mul*100
试题三
(1)InitStack(&
s_bak)
(2)Top(*s)
(3)Push(&
s_bak,ch)
(4)!
IsEmpty(s_bak)
(5)Pop(&
试题四
(1)acc_qty=0
(2)P_num[i]*data[i].Price
(3)acc_qty-acc_req[i]
(4)tag
(5)cost_Produce+cost_Keep<
mincost
试题五
(1)List1.Text
(2)List1.ListCount-1
(3)List1.List(i)
(4)List2.ListIndex
(5)List2.Clear
试题六
(1)this->
j
(2)SuperClass
错误更正结果:
SuperClass*s=newSubClass(-3)
变量j的值:
运行结果:
-32
试题七
(1)True
(2)xAsSingle
(3)2+Sin(x)
(4)2+Cos(x)
(5)Timer1.Enabled=False
试题八
(1)this
(2)super
错误更正结果:
publicabstractintgetSum()
变量i的值:
5
运行结果:
-3
2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上半年 程序员 下午 答案 word