二级C++分类模拟133.doc

上传人:scccc 文档编号:14014549 上传时间:2022-01-30 格式:DOC 页数:5 大小:88.50KB
返回 下载 相关 举报
二级C++分类模拟133.doc_第1页
第1页 / 共5页
二级C++分类模拟133.doc_第2页
第2页 / 共5页
二级C++分类模拟133.doc_第3页
第3页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《二级C++分类模拟133.doc》由会员分享,可在线阅读,更多相关《二级C++分类模拟133.doc(5页珍藏版)》请在三一文库上搜索。

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

2、ss Salarypublic:Salary(const char * id, double the_base, double the_bonus, double the_tax)/ error *fo un d*:the_base (base), the_bonus (bonus), the_tax (tax)staff_id = new charstrlen (id) +1;strcpy (staff_id, id);/ error *fo un d*Salary() delete * staff_id;double getGrossPay() const return base + bo

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

4、o un d*cout 实发工资: pay:getNetPay() endl;return 0;(分数:30.00 ) 正确答案:()解析:(1):base(the_base) ,bonus(the_bonus) ,tax(the_tax)(2) Salary() delete staff_id; (3) cout 实发工资: pay.getNetPay() endl ;答案考生文件夹考点本题考查的是Salary类,其中涉及动态数组、构造函数、析构函数和const函数。 构造函数一般使用成员列表初始化,括号内应该为形参。析构函数使用delete语句释放指针,格式为:delete指针。 解析 (

5、1) 主要考查考生对构造函数的掌握情况,构造函数的成员初始列表要把形参放在括号内。(2) 主要考查考生对析构函数的掌握情况,析构函数使用 delete 释放指针, delete 后要跟标识符“ (3) 主要考查考生对成员函数调用的掌握情况, 调用类的成员函数使用标识符“ . ”, 而不是作用域符“二、简单应用题 ( 总题数: 1,分数: 30.00)2. 请使用VC6或使用【答题】菜单打开 prog2下的工程prog2。此工程中包含一个程序文件main.cpp,其中有“部门”类 Department 和“职工”类 Staff 的定义,还有主函数 main 的定义。在主函数中定义了两 个“职工”

6、对象,他们属于同一部门。程序展示,当该部门改换办公室后,这两个人的办公室也同时得到 改变。请在程序中的横线处填写适当的代码并删除横线, 以实现上述类定义。 此程序的正确输出结果应为: 改换办公室前:职工号:0789 姓名:张三部门:人事处办公室:521职工号:0513姓名:李四部门:人事处办公室:521改换办公室后:职工号:0789姓名:张三部门:人事处办公室:311职工号:0513姓名:李四部门:人事处办公室:311注意:只在横线处填写适当的代码,不要改动程序中的其他内容。#include using namespace std;class Department / “部门”类public:

7、Department (const char * name, const char * office) strcpy(this- name, name);/*found*const char * getName() const return name; /返回部门名称/*found*const char * getOffice() const /void changeOfficeTo (const char * office) / strcpy (this - office, office);private:char name20; / 部门名称char office20; / 部门所在办公室

8、房号 ;class Staff / “职工”类返回办公室房号改换为指定房号的另一个办公室public:/*found*Staff (const char * my_id, const char * my_name, Department &my_dept):strcpy (this - strcpy (this - staff_id, my_id); name, my_name);const char * getID() const return staff id;const char * getName() const return name; Department getDepartmen

9、t() const return dept; private:char staff_id10; /职工号char name20; / 姓名Department &dept; /所在部门;void showStaff(Staff &staff) cout 职工号: staff.getlD() ;cout 姓名: staff.getName() ;cout 部门: staff.getDepartment().getName() ;cout 办公室: staff.getDepartment().getOffice() endl;int main() Department dept ( 人事处, 52

10、1);Staff Zhang (0789, 张三,dept), Li (0513, 李四,dept);cout 改换办公室前: endl;showStaff (Zhang);showStaff (Li);/人事处办公室由521搬到311 cout 改换办公室后: office , office);(2) return office;(3) dept(my_dept)(4) dept.changeOfficeTo(311);答案考生文件夹考点本题考查的是Department类和Staff类,其中涉及构造函数、strcpy()函数和 const函数。复制字符串使用函数strcpy,构造函数的成员列

11、表初始化时不能初始化指针。解析(1)主要考查考生对 strcpy函数的掌握情况,根据上一条语句:strcpy(this- name name);可知,这条语句复制的是office ,即 strcpy(this- office , office);。(2) 主要考查考生对成员函数的掌握情况,根据语句的注释:返回办公室房号可知,要填写的是一条return语句。在私有成员里:char office20 ; /部门所在办公室房号,表明office即为办公室房号。因此直接返回office 即可。(3) 主要考查考生对构造函数的掌握情况,根据函数体:strcpy(this- staff_id , my_i

12、d);strcpy(this- name my_name;可知,只有dept没有初始化,而空格前有字符“:,这是成员列表初始化的标识符,因此填写dept(my_dept)即可。(4) 主要考查考生对成员函数的调用的掌握情况,根据题目要求:人事处办公室由521搬到311。在Department类中有函数 void changeOfficeTo(const char*office)可以修改办公室的房间号,直接调用即可。主要考查考生对strcpy()函数及构造函数的掌握情况,strcpy(参数一,参数二)函数的功能是复制参数二的字符串给参数一。三、综合应用题(总题数:1,分数:40.00)3. 请使

13、用VC6或使用【答题】菜单打开prog3下的工程prog3,其中包含了类TaxCalculator(个税计算器)和主函数 main的定义。创建“个税计算器需要接收税率表信息和起征额信息。在main函数中,通过两个数组创建了如下的税率表:下标适用收入段下限(lower_limits)适用税率(rates)说明:适用的收入段为005大于0小于等于500150010大于500小于等于20002200015大于2000小于等于50003500020大于5000小于等于2000042000025大于20000小于等于4000054000030大于40000小于等于6000066000035大于60000

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

15、在函数 getTaxPayable 中的“ *333*和“ *666* 之间填入若干语句,不要改动程序中的其他内容。/TaxCalculator.h#include#includeusing namespace std;class TaxCalculatorpublic:TaxCalculator (double the_limits, double the_rates, int the_length, double the_threshold):lower_limits (new doublethe_length), rates(new doublethe_length),list_len

16、(the_length), threshold(the_threshold) for(int i = 0; i = 0)/ *333* / *666*return taxpayable;void TaxCalculator:showTaxPayable (double income) const cout 月收入为vv setw(6) income 元时应缴纳个人所得税 setw(4) getTaxPayable (income) 元 endl;/main.cpp#include TaxCalculator.h int main()double limits = 0.0, 500.0, 200

17、0.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.0);calc.showTaxPayable(4800.

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1