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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】国家二级(C++)机试-试卷21及答案解析.doc

1、国家二级(C+)机试-试卷 21 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(分数:2.00)A.O(n)B.O(n 2 )C.O(log 2 n)D.O(nlog 2 n)2.下列有关运算符重载的叙述中,正确的是( )。(分数:2.00)A.运算符重载是多态性的一种表现B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数重载D.重载运算符时可以改变其结合性3.有如下程序: #include using namespace std;

2、 class MyClass public: MyClass(int x):val(x) void Print() const coutC.=D.+=-=*=/=解析:解析:本题考查重载运算符,C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选 B。6.有如下类定义: class Person public: Person(string s):name(s) protected: string name; ;class Father:virtual public Person public: Father(string s):Person(s) ;

3、 class Mother:virtual public Person public: Mother(string s):Person(s) ; class Child:public Father,public Mother,virtual public Person public: Child(string s1,string s2,string s3):Mother(s1),Father(s2),Person(s3) ;在建立派生类 Child 的对象时,其基类 Father、Mother和 Person 的构造函数的调用顺序为(分数:2.00)A.Father,Mother,Person

4、B.Mother,Father,PersonC.Person,Father,Mother D.Father,Person,Mother,Person,Person解析:解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类构造函数,所以本题中先调用基类 person 构造函数,然后执行 father 构造函数,最后执行mother 构造函数。7.软件设计中模块划分应遵循的准则是(分数:2.00)A.低内聚低耦合B.高耦合高内聚C.高内聚低耦合 D.以上说法均错误解析:解析:根据软件设计原理提出如下优化准则:划分模块时,尽量做到高内聚、低耦合,保持模块相

5、对独立性,并以此原则优化初始的软件结构。一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。软件结构的深度、宽度、扇入、扇出应适当。模块的大小要适中。C 正确。8.若要对类 Value 中重载的类型转换运算符 long 进行声明,下列选项中正确的是(分数:2.00)A.operatorlong()const; B.operatorlong(Value)const;C.longoperatorlong();D.longoperatorlong(Value);解析:解析:参数传递有三种: 传值(value),传址(address),和传引用(reference

6、) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,函数 f2 就属于传值调用,所以不会改变 y 的值。 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量 传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。f1 函数属于传引用调用,所以 y 的值在执行完函数后变为了36,C 选项正确。9.有如下程序: #include #include using namespace std; class Father public: Father(string s):name(s)

7、 Father() coutF; private: string name; ; class Mother public: Mother(string s):name(s) Mother() coutM; private: string name; ; class Child:public Mother,public Father public: Child(string s1,string s2,string s3,int a):Father(s1),Mother(s2),name(s3),age(a) Child() coutC; private: string name; int age

8、; ; int main() Child son(“Zhang“,“Li“,“Ming“,20); return 0; 运行时的输出结果是(分数:2.00)A.CB.CMFC.CFM D.20CMF解析:解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数。所以本题中执行析构函数为派生类的析构函数、Father 的析构函数、Mother 的析构函数,所以输出 CFM,答案 C 正确。10. (分数:2.00)A.投影 B.交C.选择D.并解析:解析:用于查询的 3 个操作无法用传统的集合运算表示,引入的运算为投影运算、

9、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。投影,从关系模式中指定若干个属性组成新的关系,题目中从 R 中指定 AB 组成新的关系 T,故 A 选项正确。选择,从关系中找出满足给定条件的元组的操作称为选择,即结果 T 应该包含 R 中全部属性,故 C 选项错误。假设,R 与 S 经过某种关系得到 T,则并:RS 是将 S 中的记录追加到 R 后面;交:RS 结果是既属于 R 又属于 S 的记录组成的集合。上述两种操作中,关系 R 与 S 以及 T 要求有相同的结构,故 B、D 选项错误。11.下列关于 this 指针的描述中,正确的是(分数:2.00)A.下列关于 this

10、指针的描述中,正确的是B.类的 const 成员函数都有 this 指针C.任何静态成员函数都有 this 指针D.类的非静态成员函数都有 this 指针 解析:解析:C+中,静态成员是类的组成部分,不是任何对象的组成部分,因此静态成员函数没有 this指针,类的非 const 成员函数包括静态成员函数,所以选项 A、C 错误;答案选 B 或 D。12.下列关于输入流类成员函数 getline()的表述中,错误的是(分数:2.00)A.该函数只能用来从键盘设备读取一行字符串 B.该函数读取的字符串长度是由参数限制的C.该函数读取字符串时,遇到终止符便停止D.该函数读取字符串时,遇到终止符便停止

11、解析:解析:getline(istreamelsey=2; B.if(0)y=1elsey=2;C.if(x!=0)theny=1elsey=2;D.ifx!=0y=1;elsey=2;解析:解析:选项 B 中,y=1 语句后面少了分号“;“;选项 C 中,then 不是关键字,不符合 if 语法;选项 D 中,条件部分 x!=0 必须用圆括号括起来;只有选项 A 正确,整型变量 x 在条件中转化为逻辑变量,非 0 情况下都转化为 1;答案为 A。17.在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是(分数:2.00)A.圆括号B.中括号C.尖括号 D.花括号解析:解析:定义

12、类模板时,模板形参表同样使用尖括号括起来,答案为 C。18.下列选项中,正确的 C+标识符是(分数:2.00)A.a3B.a-3C.a3D.a_3 解析:解析:C+的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。A、B、C 错误,答案为 D。19.派生类的成员函数不能访问的基类成员是(分数:2.00)A.公有成员和保护成员B.私有成员 C.保护成员D.公有成员解析:解析:基类中的 private 成员,只有基类和基类的友元可以访问,派生类的成员函数不能直接访问,所以派生类若要访问基类的 private 成员,必须使用基类的接口,答案为 B。20.某二叉树有 5 个度为 2 的结点

13、,则该二叉树中的叶子结点数是( )。(分数:2.00)A.10B.8C.6 D.4解析:解析:根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0 的叶子节点总是比度为 2 的节点多一个,所以本题中是 516 个。21.关于函数重载,下列叙述中错误的是( )。(分数:2.00)A.重载函数的函数名必须相同B.重载函数必须在参数个数或类型上有所不同C.重载函数的返回值类型必须相同 D.重载函数的函数体可以有所不同解析:解析:所谓函数重载是指同一个函数名可以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的

14、重载。所以本题答案为 C。22.有如下程序: #include using namespace std; class Base int x; public: Base(int n=0): x(n) coutA.375B.357C.0375 D.0357解析:解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个对象 d1,先执行基类的构造函数输出 0,再执行派生类的构造函数输出 3,然后定义了一个对象 d2(5,7),其中需要调用基类的构造函数输出 7,最后

15、输出 5,所以答案为 C。23.有如下程序段: int i=9; while ( int i=0 ) cout*; i-; 运行时输出 * 的个数是(分数:2.00)A.0 B.1C.9D.无穷解析:解析:本题考查赋值运算和 while 循环,i 被赋值为为 0,所以 while 中的判断条件为假,不执行循环体,所以输出为 0 个。24.有如下类定义: class AA int a; public: AA(int n=0):a(n) ; class BB :public AA public: BB(int n) _ ;其中横线处缺失部分是(分数:2.00)A.:AA(n) B.:a(n)C.a

16、(n);D.a=n;解析:解析:本题考查派生类的构造函数,其一般形式为:派生类构造函数名(总参数表列):基类构造函数名(参数表列)所以只有选项正确。25.一个栈的初始状态为空。现将元素 1,2,3,A,B,C 依次入栈,然后再依次出栈,则元素出栈的顺序是(分数:2.00)A.1,2,3,A,B,CB.C,B,A,1,2,3C.C,B,A,3,2,1 D.1,2,3,C,B,A解析:解析:栈的修改是按后进先出的原则进行的,所以顺序应与入栈顺序相反,故选 C。26.有如下程序: #include using namespace std; void f1(int x=y; y=z; void f2(

17、int x, int y) int z=x+y; x=y; y=z; int main() int x=10,y=26; f1(x,y); f2(x,y); coutyA.10B.26C.36 D.46解析:解析:参数传递有三种: 传值(value),传址(address),和传引用(reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,函数 f2 就属于传值调用,所以不会改变 y 的值。 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量 传引用则是一种看起来像传值调用,而实际上功能同传址一样的传

18、递方式。子函数可以改写父函数的变量值。f1 函数属于传引用调用,所以 y 的值在执行完函数后变为了36,C 选项正确。27.有如下程序: #include #include using namespace std; class Father public: Father(string s):name(s) Father() coutF; private: string name; ; class Mother public: Mother(string s):name(s) Mother() coutM; private: string name; ; class Child:public M

19、other,public Father public: Child(string s1,string s2,string s3,int a):Father(s1),Mother(s2),name(s3),age(a) Child() coutC; private: string name; int age; ; int main() Child son(“Zhang“,“Li“,“Ming“,20); return 0; 运行时的输出结果是(分数:2.00)A.CB.CMFC.CFM D.20CMF解析:解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行

20、派生类析构函数,4、执行基类的析构函数。所以本题中执行析构函数为派生类的析构函数、Father 的析构函数、Mother 的析构函数,所以输出 CFM,答案 C 正确。28.有如下程序: #include using namespace std; int main() int sum = 0; for(int i = 0; i = 3; i += 1) sum += i; while(sum sum A.输出 100B.输出 103C.输出 105D.死循环 解析:解析:程序在 for 循环中嵌套 while 循环。for 循环的初始条件为,sum、i 初值为 0;进入 for 循环之后,首先

21、将 sum 累加 i,此时 sum、i 仍为 0;while 循环中,若 sum 小于 100,则将 sum 累加 i,继续 while 循环;当 sum 不满足条件时,退出循环。由于 sum、i 初值为 0,所以 while 循环中 sum 始终为0,始终满足循环条件 sum100,所以程序进入死循环。答案为 D。29.下列关于派生类构造函数和析构函数的表述中,错误的是(分数:2.00)A.下列关于派生类构造函数和析构函数的表述中,错误的是B.派生类的构造函数会隐含调用基类的构造函数C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基类的析构函

22、数,再调用派生类的析构函数 解析:解析:派生类对象的撤销顺序与构造顺序相反:首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数,这样做是为了每次析构函数销毁的都是完整的对象,选项 D 错误,答案为 D。30.设有表示公司和员工及雇佣的三张表,员工可在多家公司兼职,其中公司(公司号,公司名,地址,注册资本,法人代表,员工数),员工(员工号,姓名,性别,年龄,学历),雇佣(公司号,员工号,工资,工作起始时间)。其中表的键为公司号,表的键为员工号,则表的键(码)为(分数:2.00)A.公司号,员工号 B.员工号,工资C.员工号D.公司号,员工号,工资解析:解析:二维表中的行称为元组,候

23、选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。公司号唯一标识公司,员工号唯一标识员工,而雇佣需要公司号与员工号同时唯一标识,故表的键(码)为(公司号,员工号),故 A 选项正确。31.有如下两个类定义: class XX private: double x1; protected: double x2; public: double x3; ;class YY: protected XX private: double y1; protected: double y2; public: double y3; ;在派生类 YY

24、中的保护成员的个数是(分数:2.00)A.1B.2C.3 D.4解析:解析:类 YY 以 protected 方式继承类 XX,所以类 XX 中的 public 成员和 protected 成员在 YY 中为 protected 成员,所以 YY 中的 protected 成员有:x2,x3,y2,答案为 C。32.结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性 B.自顶向下C.模块化D.逐步求精解析:解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto 语句,所以选择 A)。33.若有下面的函数调用:fun(a+b, 3, max(n-1, b)

25、则 fun 的实参个数是( )。(分数:2.00)A.3 B.4C.5D.6解析:解析:本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、max(n-1,b)分别为其中的3 个实参。故答案为 A。34.如下函数模板: template T square(T x) return x * x; 其中 T 是( )。(分数:2.00)A.函数形参B.函数实参C.模板形参 D.模板实参解析:解析:本题考查模板函数的基本概念,根据模板函数的定义,T 是模板形参,所以答案为 C。35.有如下定义:inta5=1,3,5,7,9,*p=a;下列表达式中不能得到数值 5 的是( )。(分数:2.

26、00)A.a2B.a3 C.*(p+2)D.*p+4解析:解析:本题考查指向数组的指针,本题中指针变量 p 指向数组 a,直接使用数组下标即可取值,数组下标是从 0 开始标号的,所以 a2能取到 5,而 a3取不到 5,C 选项中使用指针后移方法能够取到 5,D 选项中*p 为 1,所以*p+4 为 5。36.有如下程序: #include #include using namespace std; class MyBag public: MyBag(string br,string cr):brand(br),color(cr) +count; MyBag() -count; static

27、int GetCount() return count; private: string brand,color; static int count; ; _ int main() MyBag one(“CityLife“,“Gray“),two(“Micky“,“Red“); coutA.intcount=0;B.staticintcount=0;C.intMyBag:count=0; D.staticintMyBag:count=0;解析:解析:本题考查构造函数和析构函数,以及静态数据成员,题目中要求输出 2,那么定义两个对象时,就执行构造函数,使得静态数据成员+count,得到 2,那么

28、 count 初始化就应该为 0,静态数据成员初始化时,只能在类体外进行初始化,一边形式为:数据类型类型:静态数据成员名=初值37.定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是( )。(分数:2.00)A.369B.369 C.0.369D.整数集合1,2,3,4,5解析:解析:只有 B)选项 369 可以用无符号整数来表示和存储。A)选项369 有负号,选项 C)0.369 是小数都不能用无符号整数类存储。选项 D)是一个整数集合得用数组来存储。38.有如下类定义和变量定义: class Parents public: int publicData; private:

29、 int privateData; ;class ChildA : public Parents /*类体略*/ ; class ChildB : private Parents /*类体略*/ ; ChildA a; ChildB b;下列语句中正确的是(分数:2.00)A.couta.publicDataendl; B.couta.privateDataendl;C.coutb.privateDataendl;D.coutb.publicDataendl;解析:解析:本题考查派生类对基类成员的访问属性,派生类公用继承基类,所以派生类可以直接使用基类的公用成员,所以只有 A 选项正确。39.

30、在数据库设计中,将 ER 图转换成关系数据模型的过程属于( )。(分数:2.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:解析:ER 图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。40.有如下的类声明: #include using namespace std; class AA public: virtual void disp() coutA; ; class BB: public AA public: void disp() coutB; ; class CC: public BB public: virtu

31、al void disp() coutC; ; void plot(AA int main() BB bb; CC cc; BB plot(bb); plot(cc); rb.disp(); return 0; 运行这个程序的输出是(分数:2.00)A.AACB.AABC.BCC D.BCB解析:解析:程序定义了类 AA,成员函数 disp()为虚函数;类 BB 公有继承 AA,重新定义了 disp()函数;类 CC 公有继承 BB,同样重新定义了 disp()函数;类 BB 中,虽然 disp()未用 virtual 修饰,但是由虚函数性质可知,BB 中的 disp()函数仍然是虚函数;ma

32、in()函数中,创建 BB 对象 bb,CC 对象 cc,使用 cc初始化 BB 类引用 rb,然后调用 plot 函数;plot 函数的形参是 AA 类的引用,通过 AA 类引用调用 disp 函数,满足多态性条件,将根据引用所指对象的类型来决定调用哪个 disp 函数;所以 plot(bb)调用类 BB中的 disp 函数,plot(cc)调用 CC 中的 disp 函数;输出分别为:“B“、“C“;另外由于 rb 为 BB 类引用,所指对象是 cc,所以运行 rb.disp()时调用的是 CC 中的 disp()函数,输出“C“,综上,程序输出为:“BCC“;答案为 C。二、基本操作题(

33、总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 pmjl。该工程中包含程序文件maincpp,其中有类 CDate(“日期”)和主函数 main 的定义。程序中位于每个“ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:原日期:2005925 更新后的日期:200641 注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostream#includeCStdlibusingnamespacestd;classCDate日期类ERROR*found*pr

34、otected:CDate()();CDate(intd,intm,inty)ERROR*found*SetDate(intday=d,intmonth=m,intyear=y);,voidDisplay();显示日期 voidSetDate(intday,intmonth,intyear)设置日期m_nDay=day;m_nNonth=month;m_nYear=year;private:intm_nDay;日 intmnNonth;月intmnYear;年;voidCDate:Display()显示日期ERROR*found*toutm_nDay“一“m_nNonth“一“m_nYear;

35、coutend1;intmain()CDated(25,9,2005);调用构造函数初始化日期cout“原日期:“;dDisplay();dSetDate(1,4,2006);调用成员函数重新设置日期cout“更新后的日期:“;dDisplay();return0;(分数:2.00)_正确答案:(正确答案:(1)public: (2)SetDate(d,m,y); (3)coutmnYear“一“mnMonth“一“m_nDay;)解析:解析:(1)通过主函数中成员函数的调用可知这里应该为公有成员,而且构造函数必须为公有继承。(2)主要考查考生对成员函数的掌握,程序在这里调用成员函数 SetD

36、ate,直接把形参代人即可。 (3)题目要求输出原日期:2005925。可以知道输出顺序为:先输出年,其次月,最后是日。三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 pmj2 下的工程 proj2,此工程中含有一个源程序文件pmj2epp,请编写一个函数 inthuiwen(intn),用于求解所有不超过 200 的 n 值,其中 n 的平方是具有对称性质的回文数(回文数是指一个数从左向右读与从右向左读是一样的,例如:34543 和 1234321 都是回文数)。求解的基本思想是:首先将 n 的平方分解成数字保存在数组中,然后将分解后的数字

37、倒过来再组成新的整数,比较该整数是否与乃的平方相等。注意:请勿修改主函数 main 和其他函数中的任何内容,只在横线处编写适当代码,也不要删除或移动“*found*”。proj2cpp#includeiostreamusingnamespacestd;inthuiwen(int1“1)intarr16,sqr,rqs=0,k=1;sqr=n*n;for(inti=1;sqr!=0;i+)*found*_;sqr=10;for(;i1;i-)rqs+=arri 一 1*k;*found*_;*found*if(_)returnn;elsereturn0;intmain()intcount=0;c

38、out“Thenumberare:“end1;for(inti=10;i200;i+)if(huiwen(i)cout+counttiti*iend1;return0;(分数:2.00)_正确答案:(正确答案:(1)arri = sqr%10 (2)k *= 10 (3)n*n = rqs)解析:解析:(1)主要考查考生对数组的掌握,使用数组存储整型数字,分解整数 sqr。 (2)主要考查考生对数组的掌握,利用数组元素组成整数 rqs。 (3)主要考查考生对 if 语句的掌握,如果两数相等就说明 n是回文数。四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打

39、开考生文件夹 prog3 下的工程 prog3,其中包含了类TaxCalculator(“个税计算器”)和主函数 main 的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在 main 函数中,通过两个数组创建了如下的税率表:利用这个税率表创建“个税计算器”时,假定起征额为 2000 元(即不超过 2000 元的所得不征收个人所得税)。请补充完成计算应纳个人所得税额的成员函数 getTaxPayable,其中的参数 income 为月收入。此程序的正确输出结果应为:月收入为 800 元时应缴纳个人所得税 0 元月收入为 1800 元时应缴纳个人所得税 0 元月收入为 2800 元时应

40、缴纳个人所得税55 元月收入为 3800 元时应缴纳个人所得税 155 元月收入为 4800 元时应缴纳个人所得税 295 元月收入为5800 元时应缴纳个人所得税 455 元注意:只能在函数 getTaxPayable 中的“*333*”和“*666*”之间填入若干语句,不要改动程序中的其他内容。TaxCalculatorh#includeiostream#includeiomanipusingnamespacestd;classTaxCalculatorpublic:TaxCalculatorfdoublethe_limits,doubletherates,intthe_length,do

41、ublethethreshold):lower1imits(newdoublethe_length),rates(newdoublethe_lengthj),list_len(the_length),threshold(thethreshold)for(inti=0;ilistlen;i+)lowerlimitsi=thelimitsi;ratesi=theratesi;TaxCalculator()deletelowerlimits;deleterates;doublegetTaxPayable(doubleincome)const;返回指定月收入的应纳个人所得税额 voidshowTaxP

42、ayable(doubleincome)const;显示指定月收入的应纳个人所得税额 private:double*lowerlimits;适用收入段下限double*rates;适用税率 intlistlen;税率表项数 doublethreshold;起征额;voidwriteToFile(constchar*path);TaxCalcnlatorcpp#include“TaxCalculatorh“doubleTaxCalculator:getTaxPayable(doubleincome)constdoubletaxable=income-threshold;应纳税工资额 double

43、tax_payable=00;应纳个人所得税额 inti=1ist_len-1;从税率表的最高适用段开始计算 while(i=0)*333*666*-i;returntax_payable;voidTaxCalculator:showTaxPayable(doubleincome)constcout“月收入为“setw(6)income”元时应缴纳个人所得税”setw(4)getTaxPayable(income)“元“end1;maincpp#include“TaxCalculatorh“intmain()doublelimits=00,5000,20000,50000,200000,400

44、000,600000,800000,1000000;doublerates=005,01,015,02,025,03t035,04f045;TaxCalculatorcalc(1imits,rates,9,20000);calcshowTaxPayable(8000);calcshowTaxPayable(18000);calcshowTaxPayable(28000);calcshowTaxPayable(38000);calcshowTaxPayable(48000);calcshowTaxPayable(58000);writeToFile(“);return0;(分数:2.00)_正确

45、答案:(正确答案:if(1ncome=2000) 如果收入小于 2000 returntaxpayahle; 直接texpayable(初始代为零) if(taxablelowerlimitsi) 如果 taxable(收入超出起征额的部分) 大于 lowerlimitsi阶段最低限额 taxpayable+=(taxable lowerlimitsi)*ratesi; 把起过阶段最低限额的部分乘以该阶段的税 率后,加到 taxpayable(个人所得税) taxable=lowerlimitsi; 把 fowerlimitsi赋值于 taxable )解析:解析:主要考查考生对成员函数的掌握情况,根据题目要求可知,完成计算应纳个人所得税额的成员函数 getTaxPayable,其中参数 income 为月收入。同时题目还表明:不超过 2000 元的所得不征收个人所得税。因此先用 if 语句判断是否要征收个人所得税。然后根据题目所给表格,来判断收入多少及应该收多少个人所得税。

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