软考程序员考试试题及分析与解答(五)

程序员 责任编辑:小狐狸 2016-05-05

添加老师微信

备考咨询

加我微信

摘要:软考程序员考试试题及分析与解答(五)

       >>>>点击进入了解程序员培训视频

 >>>>点击进入了解程序员在线辅导

 >>>>点击进入了解程序员考试教材

       程序员考试是全国软考的初级考试,通过程序员考试的合格人员具有助理工程师(或技术员)的实际工作能力和业务水平。希赛软考网整理了一些程序员考试历年真题,供大家练习。

   试题五

   阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。

   【说明】

   设计希赛IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;销售员拿固定工资1000元,然后再按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5‰。

   按要求设计一个基类employee,销售员类salesman,经理类manager,销售经理类salesmanager.

   程序5-1是类employee的模块内容,程序5-2是类salesman的类模块内容,程序5-3是类manager的模块内容,程序5-4是类salesmanager的模块内容。在主测试程序中,输入张三所管部门月销售量10000后的输出结果如下:

3.jpg

   下午试题:试题五

   【程序5-1】

   #include

   #include

   classemployee

   {

   protected:

   intno;

   char*name;

   floatsalary;

   public:

   employee(intnum,char*ch)

   {no=num;

   name=ch;

   salary=0;}

   virtualvoidpay()=0;

   virtualvoiddisplay()

   {cout《"编号:"《no《endl;

   cout《"本月工资:"《salary《endl;}

   };

   【程序5-2】

   classsalesman:(1)

   {

   protected:

   floatcommrate,sales;

   public:

   salesman(intnum,char*ch):employee(num,ch)

   {commrate=0.04;}

   voidpay()

   {cout《name《"本月销售额:";

   cin》sales;

   salary=sales*commrate+1000;}

   voiddisplay()

   {cout《"销售员:"《name《endl;

   employee::display();}

   };

   【程序5-3】

   classmanager:(1)

   {

   protected:

   floatmonthpay;

   public:

   manager(intnum,char*ch):employee(num,ch)

   {monthpay=8000;}

   voidpay()

   {salary=monthpay;}

   voiddisplay()

   {cout《"经理:"《name《endl;

   employee::display();}

   };

   【程序5-4】

   classsalesmanager:(2)

   {

   public:

   salesmanager(intnum,char*ch):(3)

   {monthpay=5000;

   commrate=0.005;}

   voidpay()

   {cout《name《"所管部门月销售量:";

   cin》sales;

   (4)}

   voiddisplay()

   {cout《"销售经理:"《name《endl;

   (5)}

   };

   voidmain()//主测试函数

   {salesmanagerp1(1001,"张三");

   p1.pay();

   p1.display();

   }

   试题五分析

   本题考查类的定义、继承及虚基类与虚函数的应用。

   首先我们来看一下基类employee的程序代码,在基类中构造了一个构造函数和两个虚函数,其中虚函数display()可以输出编号和工资。

   由整个程序的作用可以看出,类salesman与类manager应继承类employee,而类salesmanager则应该继承类salesman与类manager.在每个类中都有函数pay()和display(),且在每个类中都对这两个函数进行了重新定义。这样这两个同名函数出现多个地址映射。要解决这个问题,在C++语言中,采用虚基类。因此,第(1)空的答案是virtualpublicemployee.

   第(2)空也是表示类的继承,类salesmanager继承类salesman与类manager,因此,此空答案为publicmanager,publicsalesman.

   结合整个程序来看,其他三个类都是类salesmanager的父类,因此,第(3)空处应该填employee(num,ch),manager(num,ch),salesman(num,ch)。

   根据题目的要求,再结合主函数与类salesmanager的模块可以推出第(4)空处的功能是计算销售经理的月总工资,而计算方法是固定工资加提成。因此,答案为salary=monthpay+commrate*sales.

   对比三个子类的display()函数,不难发现第(5)空应为employee::display()。

   试题五答案

   (1)virtualpublicemployee

   (2)publicmanager,publicsalesman

   (3)employee(num,ch),manager(num,ch),salesman(num,ch)

   (4)salary=monthpay+commrate*sales;

   (5)employee::display();

     希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

 相关推荐

 2016年希赛教材大放送 

   程序员教程

   程序员考试考前串讲

   程序员考试知识点分析与真题详解(第4版 )

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取