1、国家二级 C+机试(操作题)模拟试卷 343及答案解析(总分:8.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1。该工程中包含程序文件maincpp,其中有类 CDate(“日期”)和主函数 main的定义。程序中位于每个“ERROR *found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: 原日期:2005925 更新后的日期:200641 注意:只修改每个“ERROR*found*”下的那一行不要改动程序中的其他内容。#includeiostream#includ
2、eCStdlibUSing namespace std;class CDate日期类ERROR*found*protected: CDaLe(); CDate(int d,int m,int y) ERROR*found* SefiDafie(int day=d,int month=m,int year=y); ; void Display():显示日期 void SetDate(int day,int month,int year)设置日期 m_nDay=day;m_nNonfih=month;m_nYear=year;private: int m_nDay;/日 int m nNonth;
3、月 int m nYear;年,void CDate:Display()显示日期ERROR*found* coutm_nDay”一”mnNonth”一”m-nYear; coutendl;int main() CDate d(2 5,9,2 0 05);调用构造函数初始化日期 cout“原日期:”; dDisplay(); dSefiDate(1,4,2 0 0 6);N 用成员函数重新设置日期 cout“更新后的日期:“;dDisplay();return 0;(分数:2.00)_二、简单应用题(总题数:2,分数:4.00)2.请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工
4、程 proj2。此工程中包含一个源程序文件maincpp,其中有“房间”类 Room及其派生出的“办公室”类 Office的定义,还有主函数 main的定义。请在程序中“*found*”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 办公室房间号:308 办公室长度:56 办公室宽度:48 办公室面积:2688 办公室所属部门:会计科 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#includeiostreamusing namespace std;class Room “房间”类 int room no;
5、房间号 double length; 房间长度(m) double width; 房间宽度(m)public: Room(int the room_no,double the_length,double the_width):room_no(the_room_no),length(the_length),width(the_width) int theRoomNo()constreturn room_no;/返回房间号 double theLength()constreturn length;) 返回房间长度 double theWidth()constreturn width; 返回房间宽度
6、 /* found* double theArea()const_返回房间面积(矩形面积);class Office:public Room“办公室”类 char*depart; /所属部门public: Office(int the room no,double the length,double the width,const char*thedepart)* found* :_ depart=new char | strlen(the depart)+1 j;*found* strcpy(_); 一 Office()deletedepart;) const char*theDepartm
7、ent()const return depart;返回所属部门;int main() *found* Office_; cout”办公室房间号:“an officetheRoomNo()endl ”办公室长度:”an_officethe-Length()endl ?办公室宽度:”an_officethe-Width()endl -办公室面积:”an_officetheArea()endl ”办公室所属部门:”an_officetheDepartment()endl; return 0;(分数:2.00)_3.请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下的工程 proj2,此工程
8、包含有一个源程序文件proj2cpp。其中定义了 Basel类、Base2 类和 Derived类。 Basel 是一个抽象类,其类体中声明了纯虚函数 Show。Base2 类的构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到该数组中,复制功能要求通过调用 strcpy函数来实现。Derived 类以公有继承方式继承 Basel类,以私有继承方式继承 Base2类。在 Derived类的构造函数的成员初始化列表中调用 Base类的构造函数。 请在程序中的横线处填写适当的代码,然后删除横线,以完成 Base1、Base2 和 Derived类的功能。此程序的正确输出结果应为: Im
9、a derived class 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。/proj2,cpp#includeiostream#includecstringusing namespace std;class Baselpublic:*found*下列语句需要声明纯虚函数Show_; , clasS Base2 protected: char*p; Base2(const char*s) _P=new charstrlen(s)+1;*found*下列语句将形参指向的字符串常量复制到该类的字符数组中_;一 Base2()delete_P; ;
10、*found*Derived 类 公有继承Base1,私有继承 Base2类 class Derived:_ public: *found*以下构造函数 调用 Base2类构造函数 Derived(const char*s):_ void Show()cout_pendl;;int main()Base1*pb=new Derived(“Im a derived class”); pb-Show(); delete pb; return 0;(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)4.请使用 VC6或使用【答题】菜单打开考生文件夹 prog3下的工程 prog3,其中包
11、含了类TaxCalculator(“个税计算器”)和主函数 main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在 main函数中,通过两个数组创建了如下的税率表: (分数:2.00)_国家二级 C+机试(操作题)模拟试卷 343答案解析(总分:8.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1。该工程中包含程序文件maincpp,其中有类 CDate(“日期”)和主函数 main的定义。程序中位于每个“ERROR *found*”之后的一行语句有错误,请加以改正。改正后程
12、序的输出结果应为: 原日期:2005925 更新后的日期:200641 注意:只修改每个“ERROR*found*”下的那一行不要改动程序中的其他内容。#includeiostream#includeCStdlibUSing namespace std;class CDate日期类ERROR*found*protected: CDaLe(); CDate(int d,int m,int y) ERROR*found* SefiDafie(int day=d,int month=m,int year=y); ; void Display():显示日期 void SetDate(int day,i
13、nt month,int year)设置日期 m_nDay=day;m_nNonfih=month;m_nYear=year;private: int m_nDay;/日 int m nNonth;月 int m nYear;年,void CDate:Display()显示日期ERROR*found* coutm_nDay”一”mnNonth”一”m-nYear; coutendl;int main() CDate d(2 5,9,2 0 05);调用构造函数初始化日期 cout“原日期:”; dDisplay(); dSefiDate(1,4,2 0 0 6);N 用成员函数重新设置日期 c
14、out“更新后的日期:“;dDisplay();return 0;(分数:2.00)_正确答案:(正确答案:(1)public: (2)SetDate(d,m,y); (3)coutm_nYear”一”m_nMonthm_nDay;)解析:解析:(1)通过主函数中成员函数的调用可知这里应该为公有成员,而且构造函数必须为公有继承。(2)主要考查考生对成员函数的掌握,程序在这里调用成员函数 SetDate,直接把形参代入即可。 (3)题目要求输出原日期:2005925。可以知道输出顺序为:先输出年,其次月,最后是日。二、简单应用题(总题数:2,分数:4.00)2.请使用 VC6或使用【答题】菜单打
15、开考生文件夹 proj2下的工程 proj2。此工程中包含一个源程序文件maincpp,其中有“房间”类 Room及其派生出的“办公室”类 Office的定义,还有主函数 main的定义。请在程序中“*found*”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 办公室房间号:308 办公室长度:56 办公室宽度:48 办公室面积:2688 办公室所属部门:会计科 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。#includeiostreamusing namespace std;class Room “房间”
16、类 int room no; 房间号 double length; 房间长度(m) double width; 房间宽度(m)public: Room(int the room_no,double the_length,double the_width):room_no(the_room_no),length(the_length),width(the_width) int theRoomNo()constreturn room_no;/返回房间号 double theLength()constreturn length;) 返回房间长度 double theWidth()constretur
17、n width; 返回房间宽度 /* found* double theArea()const_返回房间面积(矩形面积);class Office:public Room“办公室”类 char*depart; /所属部门public: Office(int the room no,double the length,double the width,const char*thedepart)* found* :_ depart=new char | strlen(the depart)+1 j;*found* strcpy(_); 一 Office()deletedepart;) const
18、char*theDepartment()const return depart;返回所属部门;int main() *found* Office_; cout”办公室房间号:“an officetheRoomNo()endl ”办公室长度:”an_officethe-Length()endl ?办公室宽度:”an_officethe-Width()endl -办公室面积:”an_officetheArea()endl ”办公室所属部门:”an_officetheDepartment()endl; return 0;(分数:2.00)_正确答案:(正确答案:(1)return length*wi
19、dth: (2)Room(the_room_no,the_length,the_width) (3)depart,the_depart (4)an_office(308,56,48,”会计科”)解析:解析:(1)主要考查考生对成员函数的掌握,题目要求返回房间面积(矩形面积)。由此可知空格部分要填写的是一个 return语句,返回房间面积,也就是 length*width,因此可以得出程序 return length*width;。 (2)主要考查考生对派生类的构造函数的掌握,派生类的构造函数要使用成员列表初始法先对基类进行初始化。 (3)考查 strcpy函数,由前一条语句 depart=ne
20、w charstrlen(the_depart)+1;可知,程序给 depart分配了长度为 the_depart串长加 1的空间,因此要复制字符串 the_depart串到depart,直接填写 strcpy(depart,the_depart)即可。 (4)主要考查考生对类的掌握,题目要求输出的结果为: 办公室房间号:308 办公室长度:56 办公室宽度:48 办公室面积:2688 办公室所属部门:会计科 由 Office类的构造函数可知要定义的一个 Office类的对象为an_office(308,56,48,”会计科”)。3.请使用 VC6或使用【答题】菜单打开考生文件夹 proj2下
21、的工程 proj2,此工程包含有一个源程序文件proj2cpp。其中定义了 Basel类、Base2 类和 Derived类。 Basel 是一个抽象类,其类体中声明了纯虚函数 Show。Base2 类的构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到该数组中,复制功能要求通过调用 strcpy函数来实现。Derived 类以公有继承方式继承 Basel类,以私有继承方式继承 Base2类。在 Derived类的构造函数的成员初始化列表中调用 Base类的构造函数。 请在程序中的横线处填写适当的代码,然后删除横线,以完成 Base1、Base2 和 Derived类的功能。此程序的
22、正确输出结果应为: Im a derived class 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。/proj2,cpp#includeiostream#includecstringusing namespace std;class Baselpublic:*found*下列语句需要声明纯虚函数Show_; , clasS Base2 protected: char*p; Base2(const char*s) _P=new charstrlen(s)+1;*found*下列语句将形参指向的字符串常量复制到该类的字符数组中_;一 Base2(
23、)delete_P; ; *found*Derived 类 公有继承Base1,私有继承 Base2类 class Derived:_ public: *found*以下构造函数 调用 Base2类构造函数 Derived(const char*s):_ void Show()cout_pendl;;int main()Base1*pb=new Derived(“Im a derived class”); pb-Show(); delete pb; return 0;(分数:2.00)_正确答案:(正确答案:(I)virtual void Show()=0 (2)strcpy(_p,S) (3
24、)public Basel,private Base2 (4)Base2(S)解析:解析:(1)主要考查的是纯虚函数的定义。题目要求声明纯虚函数 Show,因此首先看 Base1类的派生类 Derived类中 Show函数的定义: void Show() cout_p三、综合应用题(总题数:1,分数:2.00)4.请使用 VC6或使用【答题】菜单打开考生文件夹 prog3下的工程 prog3,其中包含了类TaxCalculator(“个税计算器”)和主函数 main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在 main函数中,通过两个数组创建了如下的税率表: (分数:2.00)
25、_正确答案:(正确答案:it(1ncome=2000) 如果收入小于 2000 return tax_payable; 直接tex_payable(初始代为零) if (taxable lower limitsi) 如果 taxable(收入超出起征额的部分) 大于 lower limitsi阶段最低限额 tax_payable += (taxable lower limitsi)*ratesi; 把起过阶段最低限额的部分乘以该阶段的税 率后,加到 tax_payable(个人所得税) taxable=lower limitsi; 把 fower limitsi赋值于 taxable )解析:解析:主要考查考生对成员函数的掌握情况,根据题目要求可知,完成计算应纳个人所得税额的成员函数 getTaxPayable,其中参数 income为月收入。同时题目还表明:不超过 2000元的所得不征收个人所得税。因此先用 if语句判断是否要征收个人所得税。然后根据题目所给表格,来判断收入多少及应该收多少个人所得税。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1