ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:67.50KB ,
资源ID:1324099      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1324099.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C++-47及答案解析.doc)为本站会员(appealoxygen216)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】二级C++-47及答案解析.doc

1、二级 C+-47及答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 prog1下的工程 prog1,该工程中包含程序文件main.cpp,其中有 Salary(“工资”)类和主函数 main的定义。程序中位于每个“/ERROR*found*”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应为: 应发合计:3500 应扣合计:67.5 实发工资:3432.5 注意:只修改每个“/ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include iostream usi

2、ng namespace std; class Salary public: Salary(const char * id, double the_base, double the_bonus, double the_tax) /ERROR *found* :the_base(base), the bonus (bonus), the tax(tax) staff_id=new charstrlen(id)+1; strcpy(staff_id, id); /ERROR *found* Salary() delete * staff id; double getGrossPay() const

3、 returnbase +bonus; /返回应发项合计 double getNetPay()const return getGrossPay() -tax; /返回实发工资额 private: char * staff_id; /职工号 double base; /基本工资 double bonus; /奖金 double tax; /代扣个人所得税 ;int main() Salary pay(“888888“, 3000.0, 500.0, 67.50); cout “应发合计:“ pay.getGrossPay() “; cout “应扣合计:“ pay. getGrossPay()

4、pay.getNetPay() “; /ERROR *found* cout “实发工资:“ pay:getNetPay() endl; return 0; (分数:30.00)_二、B简单应用题/B(总题数:1,分数:30.00)2.请使用 VC6或使用答题菜单打开考生文件夹 prog2下的工程 prog2。此工程中包含一个程序文件main.cpp,其中有“部门”类 Department和“职工”类 Staff的定义,还有主函数 main的定义。在主函数中定义了两个“职工”对象,他们属于同一部门。程序展示,当该部门改换办公室后,这两个人的办公室也同时得到改变。请在程序中的横线处填写适当的代

5、码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 改换办公室前: 职工号:0789 姓名:张三 部门:人事处 办公室:521 职工号:0513 姓名:李四 部门:人事处 办公室:521 改换办公室后: 职工号:0789 姓名:张三 部门:人事处 办公室:311 职工号:0513 姓名:李四 部门:人事处 办公室:311 注意:只在横线处填写适当的代码,不要改动程序中的其他内容。 #include iostream using namespace std; class Department /“部门“类 public: Department (const char * name,con

6、st char * office) strcpy(this -name, name); /* found* _ oonst char * getName () const return name; /返回部门名称 /* found* const char * getOffice ()const_ /返回办公室房号 void changeOfficeTo(const char * office) /改换为指定房号的另一个办公室 strcpy(this -office, office); private: char name20; /部门名称 char office20; /部门所在办公室记号 ;

7、 class Staff /“职工“类 public: /*found* Staff (const char * my id, constchar * my_name, Department _ strcpy (this - staff_id, my_id); strcpy (this - name, my_name ); const char * getID () const returnstaff_id; const char * getName () const return name; Department getDepartment () constreturn dept; priv

8、ate: char staff_id10; /职工号 char name20; /姓名 Department /所在部门 ; void showStaff(Staff cout “姓名:“ staff.getName () “; cout “部门:“ staff.getDepartmerit ().getName () “; cout “办公室:“ staff, getDepartment(). getOffice() endl; int main() Department dept(“人事处“, “521“); Staff Zhang (“0789“, “张三“, dept), Li(“05

9、13“, “李四“, dept); cout “改换办公室前:“ endl; showStaff(Zhang); showStaff(Li); /人事处办公室由521搬到 311 /*found* _ cout “改换办公室后:“ endl; showStaff(Zhang); showStaff(Li); return 0; (分数:30.00)_三、B综合应用题/B(总题数:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 prog3下的工程 prog3,其中包含了类TaxCalculator(“个税计算器”)和主函数 main的定义。创建“个税计算器”需要接收税率表信

10、息和起征额信息。在 main函数中,通过两个数组创建了如下的税率表: 下标 适用收入段下限(lower_limits)适用税率(rates) 说明:适用的收入段为0 0 5 大于 0小于等于 5001 500 10 大于 500小于等于 20002 2000 15 大于 2000小于等于 50003 5000 20 大于 5000小于等于 200004 20000 25 大于 20000小于等于 400005 40000 30 大于 40000小于等于 600006 60000 35 大于 60000小于等于 800007 80000 40 大于 80000小于等于 1000008 10000

11、0 45 大于 100000利用这个税率表创建“个税计算器”时,假定起征额为 2000元(即不超过 2000元的所得不征收个人所得税)。请补充完成计算应纳个人所得税额的成员函数 getTaxPayable,其中的参数 income为月收入。此程序的正确输出结果应为: 月收入为 800元时应缴纳个人所得税 0元 月收入为 1800元时应缴纳个人所得税 0元 月收入为 2800元时应缴纳个人所得税 55元 月收入为 3800元时应缴纳个人所得税 155元 月收入为 4800元时应缴纳个人所得税 295元 月收入为 5800元时应缴纳个人所得税 455元 注意:只能在函数 getTaxPayable

12、中的“/*333*”和“/*666*”之间填入若干语句,不要改动程序中的其他内容。 /TaxCalculator.h #includeiostream #includeiomanip using namespace std; class TaxCalculator public: TaxCalculator (double the_limits, double the_rates , int the_length, double the threshold) : lower_limits (new double the_length), rates ( new double the_lengt

13、h), list_fen (the_length), thresh-old (the_threshold) for(int i=0; ilist_len; i+) lower_limitsi = the_limitsi; ratesi=the_ratesi; TaxCalculator() delete lower_limits; delete rates; double getTaxPayable (double income) const; /返回指定月收入的应纳个人所得税额 void showTaxPayable (double income)const; /显示指定月收入的应纳个人所得

14、税额 private: double * lower_limits; /适用收入段下限 double * rates; /适用税率 int list len; /税率表项数 double threshold; /起征额 ; void writeToFile(const char * path); /TaxCalcnlator.cpp #include “TaxCalculator.h“ double TaxCalculator:getTaxPayable (double income)const double taxable =income-threshold;/应纳税工资额 double t

15、ax_payable = 0.0; /应纳个人所得税额 int i=list_len-1; while (i=0) /* 333* /* 666* -i; return tax_payable; void TaxCalculator: showTaxPayable (double income) const cout “月收入为“ setw (6) income “元时应缴纳个人所得科名“ setw (4)getTaxPayable (income) “元“ endl; /main. cpp #include “TaxCal culator, h“ int main () double lim

16、its = 0.0, 500.0,2000.0, 5000.0, 20000.0, 40000.0,60000.0, 80000.0, 100000.0; double rates = 0.05, 0.1, 0.15,0.2, 0.25, 0.3, 0.35, 0.4, 0.45; TaxCalculator calc (limits, rates,9, 2000.0); calc.showTaxPayable (800.0); calc.showTaxPayable(1800.0); calc.showTaxPayable(2800.0); calc.showTaxPayable(3800.

17、0); calc.showTaxPayable(4800.0); calc.showTaxPayable(5800.0); writeToFile (“); return 0; (分数:40.00)_二级 C+-47答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 prog1下的工程 prog1,该工程中包含程序文件main.cpp,其中有 Salary(“工资”)类和主函数 main的定义。程序中位于每个“/ERROR*found*”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应

18、为: 应发合计:3500 应扣合计:67.5 实发工资:3432.5 注意:只修改每个“/ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include iostream using namespace std; class Salary public: Salary(const char * id, double the_base, double the_bonus, double the_tax) /ERROR *found* :the_base(base), the bonus (bonus), the tax(tax) staff_id=new charstrlen

19、id)+1; strcpy(staff_id, id); /ERROR *found* Salary() delete * staff id; double getGrossPay() const returnbase +bonus; /返回应发项合计 double getNetPay()const return getGrossPay() -tax; /返回实发工资额 private: char * staff_id; /职工号 double base; /基本工资 double bonus; /奖金 double tax; /代扣个人所得税 ;int main() Salary pay(

20、888888“, 3000.0, 500.0, 67.50); cout “应发合计:“ pay.getGrossPay() “; cout “应扣合计:“ pay. getGrossPay() -pay.getNetPay() “; /ERROR *found* cout “实发工资:“ pay:getNetPay() endl; return 0; (分数:30.00)_正确答案:(1):base(the_base), bonus(the_bonus), tax(the_tax) (2)Salary()deletestaff_id;(3)cout“实发工资:“pay.getNetPay(

21、)endl;)解析:考点 本题考查的是 Salary类,其中涉及动态数组、构造函数、析构函数和 const函数。构造函数一般使用成员列表初始化,括号内应该为形参。析构函数使用 delete语句释放指针,格式为:delete指针。 解析 (1)主要考查考生对构造函数的掌握情况,构造函数的成员初始列表要把形参放在括号内。 (2)主要考查考生对析构函数的掌握情况,析构函数使用 delete释放指针,delete 后要跟标识符“”。(3)主要考查考生对成员函数调用的掌握情况,调用类的成员函数使用标识符“.”,而不是作用域符“:”。二、B简单应用题/B(总题数:1,分数:30.00)2.请使用 VC6或

22、使用答题菜单打开考生文件夹 prog2下的工程 prog2。此工程中包含一个程序文件main.cpp,其中有“部门”类 Department和“职工”类 Staff的定义,还有主函数 main的定义。在主函数中定义了两个“职工”对象,他们属于同一部门。程序展示,当该部门改换办公室后,这两个人的办公室也同时得到改变。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 改换办公室前: 职工号:0789 姓名:张三 部门:人事处 办公室:521 职工号:0513 姓名:李四 部门:人事处 办公室:521 改换办公室后: 职工号:0789 姓名:张三 部门:人事处

23、 办公室:311 职工号:0513 姓名:李四 部门:人事处 办公室:311 注意:只在横线处填写适当的代码,不要改动程序中的其他内容。 #include iostream using namespace std; class Department /“部门“类 public: Department (const char * name,const char * office) strcpy(this -name, name); /* found* _ oonst char * getName () const return name; /返回部门名称 /* found* const char

24、 * getOffice ()const_ /返回办公室房号 void changeOfficeTo(const char * office) /改换为指定房号的另一个办公室 strcpy(this -office, office); private: char name20; /部门名称 char office20; /部门所在办公室记号 ; class Staff /“职工“类 public: /*found* Staff (const char * my id, constchar * my_name, Department _ strcpy (this - staff_id, my_i

25、d); strcpy (this - name, my_name ); const char * getID () const returnstaff_id; const char * getName () const return name; Department getDepartment () constreturn dept; private: char staff_id10; /职工号 char name20; /姓名 Department /所在部门 ; void showStaff(Staff cout “姓名:“ staff.getName () “; cout “部门:“ s

26、taff.getDepartmerit ().getName () “; cout “办公室:“ staff, getDepartment(). getOffice() endl; int main() Department dept(“人事处“, “521“); Staff Zhang (“0789“, “张三“, dept), Li(“0513“, “李四“, dept); cout “改换办公室前:“ endl; showStaff(Zhang); showStaff(Li); /人事处办公室由521搬到 311 /*found* _ cout “改换办公室后:“ endl; showS

27、taff(Zhang); showStaff(Li); return 0; (分数:30.00)_正确答案:(1)strcpy(this-office, office); (2)return office; (3)dept(my_dept) (4)dept.changeOfficeTo(“311“);)解析:考点 本题考查的是 Department类和 Staff类,其中涉及构造函数、strcpy()函数和 const函数。复制字符串使用函数 strcpy,构造函数的成员列表初始化时不能初始化指针。 解析 (1)主要考查考生对 strcpy函数的掌握情况,根据上一条语句:strcpy(this

28、name, name);可知,这条语句复制的是office,即 strcpy(this-office, office);。 (2)主要考查考生对成员函数的掌握情况,根据语句的注释:返回办公室房号可知,要填写的是一条 return语句。在私有成员里:char office20;/部门所在办公室房号,表明 office即为办公室房号。因此直接返回 office即可。 (3)主要考查考生对构造函数的掌握情况,根据函数体: strcpy(this-staff_id, my_id); strcpy(this-name, my_name); 可知,只有 dept没有初始化,而空格前有字符“:”,这是成员

29、列表初始化的标识符,因此填写 dept(my_dept)即可。 (4)主要考查考生对成员函数的调用的掌握情况,根据题目要求:人事处办公室由 521搬到 311。在 Department类中有函数 void changeOfficeTo(const char*office)可以修改办公室的房间号,直接调用即可。 主要考查考生对 strepy()函数及构造函数的掌握情况,strcpy(参数一,参数二)函数的功能是复制参数二的字符串给参数一。三、B综合应用题/B(总题数:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 prog3下的工程 prog3,其中包含了类TaxCalcu

30、lator(“个税计算器”)和主函数 main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在 main函数中,通过两个数组创建了如下的税率表: 下标 适用收入段下限(lower_limits)适用税率(rates) 说明:适用的收入段为0 0 5 大于 0小于等于 5001 500 10 大于 500小于等于 20002 2000 15 大于 2000小于等于 50003 5000 20 大于 5000小于等于 200004 20000 25 大于 20000小于等于 400005 40000 30 大于 40000小于等于 600006 60000 35 大于 60000小于等

31、于 800007 80000 40 大于 80000小于等于 1000008 100000 45 大于 100000利用这个税率表创建“个税计算器”时,假定起征额为 2000元(即不超过 2000元的所得不征收个人所得税)。请补充完成计算应纳个人所得税额的成员函数 getTaxPayable,其中的参数 income为月收入。此程序的正确输出结果应为: 月收入为 800元时应缴纳个人所得税 0元 月收入为 1800元时应缴纳个人所得税 0元 月收入为 2800元时应缴纳个人所得税 55元 月收入为 3800元时应缴纳个人所得税 155元 月收入为 4800元时应缴纳个人所得税 295元 月收入

32、为 5800元时应缴纳个人所得税 455元 注意:只能在函数 getTaxPayable中的“/*333*”和“/*666*”之间填入若干语句,不要改动程序中的其他内容。 /TaxCalculator.h #includeiostream #includeiomanip using namespace std; class TaxCalculator public: TaxCalculator (double the_limits, double the_rates , int the_length, double the threshold) : lower_limits (new doub

33、le the_length), rates ( new double the_length), list_fen (the_length), thresh-old (the_threshold) for(int i=0; ilist_len; i+) lower_limitsi = the_limitsi; ratesi=the_ratesi; TaxCalculator() delete lower_limits; delete rates; double getTaxPayable (double income) const; /返回指定月收入的应纳个人所得税额 void showTaxP

34、ayable (double income)const; /显示指定月收入的应纳个人所得税额 private: double * lower_limits; /适用收入段下限 double * rates; /适用税率 int list len; /税率表项数 double threshold; /起征额 ; void writeToFile(const char * path); /TaxCalcnlator.cpp #include “TaxCalculator.h“ double TaxCalculator:getTaxPayable (double income)const doubl

35、e taxable =income-threshold;/应纳税工资额 double tax_payable = 0.0; /应纳个人所得税额 int i=list_len-1; while (i=0) /* 333* /* 666* -i; return tax_payable; void TaxCalculator: showTaxPayable (double income) const cout “月收入为“ setw (6) income “元时应缴纳个人所得科名“ setw (4)getTaxPayable (income) “元“ endl; /main. cpp #includ

36、e “TaxCal culator, h“ int main () double limits = 0.0, 500.0,2000.0, 5000.0, 20000.0, 40000.0,60000.0, 80000.0, 100000.0; double rates = 0.05, 0.1, 0.15,0.2, 0.25, 0.3, 0.35, 0.4, 0.45; TaxCalculator calc (limits, rates,9, 2000.0); calc.showTaxPayable (800.0); calc.showTaxPayable(1800.0); calc.showT

37、axPayable(2800.0); calc.showTaxPayable(3800.0); calc.showTaxPayable(4800.0); calc.showTaxPayable(5800.0); writeToFile (“); return 0; (分数:40.00)_正确答案:(if(income=2000) /如果收入小于 2000 return tax_payable; /直接 tex_payable(初始代为零) if (taxablelower_limitsi) /如果 taxable(收入超出起征额的部分) 大于lower_limitsi阶段最低限额 tax_pa

38、yable += (taxable-lower_limitsi)*ratesi; /把起过阶段最低限额的部分乘以该阶段的税 率后,加到 tax payable(个人所得税) taxable = lower_limitsi; /把 fower limitsi赋值于 taxable )解析:考点 本题考查的是 TaxCalculator类,其中涉及构造函数、析构函数和动态数组。TaxCalculatol类是个税计算器,首先要明白如何计算税率,然后结合类中的成员完成函数。 解析 主要考查考生对成员函数的掌握情况,根据题目要求可知,完成计算应纳个人所得税额的成员函数getTaxPayable,其中参数 income为月收入。同时题目还表明:不超过 2000元的所得不征收个人所得税。因此先用 if语句判断是否要征收个人所得税。然后根据题目所给表格,来判断收入多少及应该收多少个人所得税。 主要考查考生对成员函数的掌握,程序和生活息息相关,关于这类程序考生仔细琢磨题目。

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1