国家二级(C++)机试模拟试卷26(共379题)_第1页
国家二级(C++)机试模拟试卷26(共379题)_第2页
国家二级(C++)机试模拟试卷26(共379题)_第3页
国家二级(C++)机试模拟试卷26(共379题)_第4页
国家二级(C++)机试模拟试卷26(共379题)_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级(C++)机试模拟试卷26(共9套)(共379题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。2、分析下面程序,该程序的运行结果是()。#includeclassTestClass{public:staticintm:TestClass0{m++:)TestClass(intn、{m=n:}staticvoidtest(){m++:));intTestClass::m=0;voidmain(){TestClassA:TestClassB(3);A.test();TestClass::test();cout<<“m=”<A、m=3B、m=4C、m=5D、m=6标准答案:C知识点解析:由主函数main入手,首先定义TestClass对象A,B;埘象B构造函数值为3,构造函数中m++,所以这时m=4。主函数中调用A.test(),因为“staticintm;”,m被定义为类TestClass静态成员变量,当它的值改变后,则在各对象中这个数据成员的值都同时改变了。所以这里执行“A.test();”中的m为前面进行加1操作后的4,即m现在的值为5。3、下列程序将X、Y和Z按从小到大的顺序排列,横线处应添加语句()。templatevoidfun(_______){Ta:if(x>y){a=x;x=y;y=a;}if(y>z){a=y;y=z;z=a;}if(x>y){a=x;x=y;y=a;}}A、Tx,Ty,TZB、Tx;y;zC、T&x,T&y,T&zD、T&x,&y,&z标准答案:C知识点解析:函数fun的类型为void没有任何返回值,函数中变量的改变,即参数的改变应该影响实参。应该是地址传递方式,即把引用型作为函数形参。类T是类的抽象,可以利用模板建立各种数据类型的类。所以补全函数的定义为“T&x,T&y,T&z”。4、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流。②反映出用户问题的结构,可以作为软件开发工作的基础和依据。③作为确认测试和验收的依据。5、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。6、下面关于函数模板的表述中不正确的是()。A、类模板的成员函数都是模板函数B、类模板本身在编译过程中不会产生任何代码C、类模板只能有虚拟类型的参数D、用类模板定义一个对象时,实参不能省略标准答案:C知识点解析:类模板本身在编译时是不会产生代码的,只有在其实例化以后才产生代码。定义一个对象时,不能省略其实参。7、下面叙述中错误的是()。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行“错误定位”是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。8、以下程序的执行结果是()。#includeclassTestClass2{public:TestClass2(){};TestClass2(inti,intj);voidprintb0;private:inta,b;);classTestClass1{public:TestClassl(){}TestClass1finti,intj);voidprinta();private:TestClass2c:};TestClass1::TestClassI(inti,intj):c(i,j){}voidTestClass1::printa(){c.printb0;}TestClass2::TestClass2(inti,intj){a=i:b=j;}voidTestClass2::printb(){cout<<“a=”<A、a=7,b=8B、a=8,b=7C、a=7,b=9D、a=8,b=9标准答案:C知识点解析:由主函数main入手,定义了restClassl的对象m,其中参数为7和9。“m.printa();”中TestClassl中printa为"c.printb():”,其中c为TestClass2的对象,所以printb为restClass2中的“void‘TestClass2::printbO”,即输出为“a=7,b=9”。9、C++中的模板包括()。A、对象模板和函数模板B、对象模板和类模板C、函数模板和类模板D、变量模板和对象模板标准答案:C知识点解析:本题考查函数模板和类模板,所以答案为C。10、软件测试的目的是()。A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。11、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。12、有如下定义:inta[5]={1,3,5,7,9},*p=a;下列表达式中不能得到数值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4标准答案:B知识点解析:本题考查指向数组的指针,本题中指针变量p指向数组a,直接使用数组下标即可取值,数组下标是从0开始标号的,所以a[2]能取到5,而a[3]取不到5,C选项中使用指针后移方法能够取到5,D选项中*p为1,所以*p+4为5。13、在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用()。A、内联函数B、重载函数C、递归调用D、嵌套调用标准答案:A知识点解析:此题考查的是内联函数的相关知识点。C++引入内联函数是用它来代替C语言中的预处理宏函数,内联函数在调用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。14、若MyTemp是一个具有虚拟类型参数的类模板,且有如下语句序列:MyTempp2;MyTemp<long>p3[2];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是()。A、1B、2C、3D、4标准答案:B知识点解析:类模板是一系列相关类的模板或样板,成员函数的源代码形式相同,不同的是所针对的类型不一样,如题中的一个double类型,一个long类型;类模板中数据类型本身是它的参数,它是类的生成器。15、按照标识符的要求,下列选项中,()符号不能组成标识符。A、连接符B、下划线C、大小写字母D、数字字符标准答案:A知识点解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。16、当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为()。A、ios::inB、ios::outC、ios::in[ios::outD、以上都不对标准答案:D知识点解析:使用fstream类建立文件流必须定义打开方式,否则编译器无法判断该文件流是读还是写。17、下列关于函数的叙述中,正确的是()。A、C++不允许函数嵌套定义B、C++中所有函数都有返回值C、函数的形参列表一定不能为空D、调用函数时一定会执行完函数体的最后一条语句标准答案:A知识点解析:C++中函数可以不返回任何值,不返回任何值指定返回类型为void类型;函数形参表可以为空,但不能省略;函数调用过程中,可能会由于return语句或者异常终止执行,不一定会执行完最后一条语句;B、C、D错误;函数不允许嵌套定义,答案为A。18、下列关于输入流类成员函数getline()的叙述中,错误的是A、该函数是用来读取键盘输入的字符串的B、该函数读取的字符串长度是受限制的C、该函数读取字符串时,遇到终止符便停止D、该函数读取字符串时,可以包含空格标准答案:A知识点解析:本题考查字符输入的流成员函数getline,函数原型为:istream&getline(istream&is,string&str,chardelim);将输入流is中读到的字符存入str中,直到遇到终结符delim才结束。对于第一个函数delim是可以由用户自己定义的终结符;对于第二个函数delim默认为’\n’(换行符)。函数在输入流is中遇到文件结束符(EOF)或者在读入字符的过程中遇到错误都会结束。在遇到终结符delim后,delim会被丢弃,不存入str中。在下次读入操作时,将在delim的下个字符开始读入。所以A选项错误。19、下面关于C++的特点中描述不正确的是()。A、C++是C语言的超集,大多数C程序在不用修改的情况下就可以在C++的集成环境中运行或调试B、C++是面向对象的程序设计语言C、C++中没有结构化编程的语句D、C++的执行效率很高标准答案:C知识点解析:C++是基于C语言发展起来的一种面向对象的高级语言,具有了面向对象程序设计语言的特征,同时具有结构化编程的思想。20、下列叙述中正确的是A、所谓算法就是计算方法B、程序可以作为算法的一种描述方法C、算法设计只需考虑得到计算结果D、算法设计可以忽略算法的运算时间标准答案:B知识点解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序,A选项错误。算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果,C选项错误。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的,D选项错误。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法,B选项正确。21、一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是A、一对多B、一对一C、多对一D、多对多标准答案:A知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。实体运动队和队员的关系为1:m联系,故A选项正确。22、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"~A";}};classBB{public:BB(){cout<<"B";}~BB(){cout<<"~B";}};intmain(){AA*pa=newAA;BBb;deletepa;return0;}运行这个程序的输出是A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A标准答案:A知识点解析:main()函数中首先动态创建AA类对象,调用AA类构造函数,输出"A",创建BB类对象,调用BB类构造函数,输出"B",使用delete显式销毁AA类对象,调用AA类析构函数,输出"~A",程序结束时,销毁BB类对象,编译器自动调用BB类析构函数,输出"~B",整个程序输出结果为:"AB~A~B",答案为A。23、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=8,RED,BLACK=15};则枚举常量RED的值为A、2B、3C、9D、10标准答案:D知识点解析:枚举类型中,枚举成员可以显式初始化或隐式初始化;默认的情况下第一个枚举成员赋值为0,后面每个成员赋值比前面大1。所以枚举类型COLOR中各个成员值分别为:0,1,5,8,9,15。RED为9,答案为C。24、有如下程序:#include<iostream>usingnamespacestd;classTestClass{intn;public:TestClass(intk):n(k){}intget(){returnn;}imgetOconst{returnn+l;}};intmain(){TestClassp(5);constTestClassq(6);cout<<p.get()<<q.get();return0:}执行后的输出结果是()。A、55B、57C、75D、77标准答案:B知识点解析:C++中对常对象的成员函数调用,将自动调用其常成员函数,程序中调用原型为"intgot()const;"的函数,对于非常对象将调用原型为"intget();’’的函数。因为首先用5对对象p进行了初始化,所以执行p.get()时直接返回5,而对于常对象则以6对q进行初始化,在调用q.get()时,将调用原型为"intgot()const;"的函数,该函数将返回n+1,第二个输出应为7,所以本题答案为57。25、关于关键字class和typename,下列表述中正确的是()。A、程序中的typename都可以替换为classB、程序中的class都可以替换为typenameC、在模板形参表中只能用typename来声明参数的类型D、在模板形参表中只能用class或typename来声明参数的类型标准答案:A知识点解析:程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。26、下列关于重载运算符错误的是A、运算符::不能被重载B、重载类型转换运算符不需要声明返回值C、-既可以作为一元运算符,又可以作为二元运算符被重载D、运算符[]不能被重载标准答案:D知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,不能重载的运算符只有5个:.、.*、::、sizeof、?:。所以本题选择D。27、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"~A";}};classBB{public:BB(){cout<<"B";}~BB(){cout<<"~B";}};intmain(){AA*pa=newAA;BBb;deletepa;return0;}运行这个程序的输出是A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A标准答案:A知识点解析:main()函数中首先动态创建AA类对象,调用AA类构造函数,输出"A",创建BB类对象,调用BB类构造函数,输出"B",使用delete显式销毁AA类对象,调用AA类析构函数,输出"~A",程序结束时,销毁BB类对象,编译器自动调用BB类析构函数,输出"~B",整个程序输出结果为:"AB~A~B",答案为A。28、有如下程序:#includeusingnamespacestd;voidfun(inti){cout<<"inti/";}voidfun(charc){cout<<"charc/";}intmain(){fun(0);fun(’c’);return0;}运行后的输出结果是A、inti/inti/B、inti/charc/C、charc/inti/D、charc/charc/标准答案:B知识点解析:程序有两个重载fun函数,函数原型分别为fun(int)、fun(char);main函数中调用fun(0),由于0可以精确匹配原型为fun(int)的函数,所以fun(0)将选择原型为fun(int)的函数,输出inti/;同理fun(’c’)精确匹配原型为fun(char)的函数,输出charc/,程序最终输出结果为:inti/charc/;答案为B。29、要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是()。A、ifstreamfin=ifstream.open("file.dat");B、ifstream*fin=newifstream("file.dat");C、ifstreamfin;fin.open("file.dat");D、ifstream*fin=newifstream();fin->open("file.dat");标准答案:A知识点解析:本题考查对文件流输入的操作,可以调用文件流的成员函数pen,一般形式如下:文件流对象.open(磁盘文件名,输入/输出方式)。根据以上格式,可以判断A选项错误。30、软件需求分析阶段的主要任务是A、确定软件开发方法B、确定软件开发工具C、确定软件开发计划D、确定软件系统的功能标准答案:D知识点解析:需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系统的功能,D选项正确。A、B、C选项均为开发阶段工作。31、下列字符串中可以用作C++标识符的是A、1481varB、test-1481C、trueD、_123标准答案:D知识点解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线3种字符组成,且第一个字符必须为字母或者下划线。C选项为C++的特定标识符,只有D选项正确。32、设二叉树如下:则后续序列为A、ABDEGCFHB、DBGEAFHCC、DGEBHFCAD、ABCDEFGH标准答案:C知识点解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序遍历为ABDEGCFH,中序遍历为DBGEAFHC,后序遍历为DGEBHFCA,故C选项正确。33、除了显式定义的构造函数外,类中还有可能包含编译器自动生成的构造函数,因此一个类所拥有的构造函数的至少有A、1个B、2个C、3个D、4个标准答案:A知识点解析:一个类,如果没有显示定义的构造函数,那么编译器自动生成一个构造函数;一个类,如果显示定义了构造函数,无论个数多少,编译器也不会再生成任何构造函数,所以一个类所拥有的构造函数至少有1个,答案为A。34、有如下程序:#includeusingnamespacestd;classVAC{public:intf()const{return3;}intf(){return5;}};intmain(){VACv1;constVACv2;cout<A、53B、35C、55D、33标准答案:A知识点解析:本题考查常对象及常成员函数及构造函数,常对象只能调用常成员函数,所以本题中,对象v1为普通对象,执行v1.f()后,会执行默认构造函数,输出5,对象v2为常对象,执行v2.f()后,会执行常构造函数,输出3。35、在软件设计中不使用的工具是()。A、系统结构图B、PAD图C、数据流图(DFD图)D、程序流程图标准答案:C知识点解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。36、有如下类定义:classCup{public:voidSetPrice(doubleval);private:doubleprice;};若要在类体外给出对成员函数SetPrice的定义,下列选项中正确的是A、voidCup::SetPrice(doubleval){price=val;}B、voidCup.SetPrice(doubleval){price=val;}C、voidSetPrice(doubleval){Cup::price=val;}D、voidSetPrice(doubleval){Cup.price=val;}标准答案:A知识点解析:本题考查如何在类体外定义成员函数,在类体外定义成员函数需要使用作用域运算符::,只有A选项符合定义格式,所以A选项正确。37、有如下程序:#includeusingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;return0;}若程序的输出结果是:123则程序中下画线处遗漏的语句是()。A、cout<B、cout<C、cout<D、cout<标准答案:A知识点解析:本题考查构造函数、常成员函数和静态数据成员。外部同名的变量赋值,不能改变类的静态变量值,所以Fun对象里的i值为2,所以本题答案为A。38、有如下函数定义:voidfunc(inta,int&b){a++;b++;}若执行代码段:intx=0,y=1;func(x,y);则变量x和y的值分别是()。A、0和1B、1和1C、0和2D、1和2标准答案:C知识点解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。本题中实参x为传值方式,所以x的值不会改变;y为引用形参,所以会改变。故本题答案为C。39、下列语句中错误的是()。A、constinta;B、constinta=10;C、constint*point=0;D、constint*point=newint(10);标准答案:A知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。A选项没有初始化,B、C、D选项都正确。40、计算机软件包括A、算法和数据B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。故D选项正确。二、基本操作题(本题共1题,每题1.0分,共1分。)41、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正错误,使得程序通过运行。程序输出:5a}注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。#includetemplate∥********error********tmin(tx,ty){return(x>y)?y:x;}voidmain(){intn=5;∥********error********charc=“a”;intd=1;∥********eroor********cout<标准答案:(1)Tmin(Tx,Ty)(2)charc=‘a’;(3)usingnamespacestd;知识点解析:程序的主要功能是实现题目要求的输出,解题的关键是通过调试中出现的错误提示语句,进行主要分析。三、简单应用题(本题共1题,每题1.0分,共1分。)42、请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中定义了Employee类和Manager类。Em-ployee用于表示某公司的雇员,其属性包括姓名(name)和工作部分(dept)。Manager是Employee的公有派生类,用于表示雇员中的经理。除了姓名和丁作部分之外,Manager的属性还包括级别(1evel)。Employee类的成员函数print用于输出雇员的信息;Manager类的成员函数print负责输出经理的信息。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:Name:SallySmithDept:SalesLevel:2注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。1#include2#include3usingnamespacestd;4classEmployee{5public:6Employee(stringname,stringdept):7//**********found**********8________9{}10virtualvoidprint()const;11stringdept()const//返回部门名称12{13//**********found**********14_______15}16virtual~Employee(){)17private:18stringname;19stringdept;20};21classManager:publicEmployee{22public:23Manager(stringname,stringdept,intlevel):24//**********found**********25______26{}27virtualvoidprint()const;28private:29intlevel;30};31voidEmployee::print()const32{33cout<<"Name:"<print();46deleteemp;47return0;48}标准答案:(1)name_(name),dept_(dept)(2)returndept_;(3)Employee(name,dept),leVel_(1eVel)(4)Employee::print();知识点解析:(1)主要考查考生对构造函数的掌握,这里使用成员列表初始化法对私有成员初始化。(2)主要考查考生对成员函数的掌握,题目要求返回部门名称,因此这里是一条返回语句。函数要求返回的类型为string,因此直接返回dept_即可。(3)主要考查考生对构造函数的掌握,因为Manager类是Employee类的派生类,因此它的构造函数要先对基类初始化,应使用成员列表初始化。(4)主要考查考生对虚函数的掌握,因为Manager类是Employee类的派生类,因此它的print函数可以先调用基类的print函数,再输出自身要输出的数据,故为Employee::print();。四、综合应用题(本题共1题,每题1.0分,共1分。)43、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)在类TestClass中定义name为字符串类型,age为整型,请在注释∥********1********之后添加语句。(2)设置类TestClass0的基类为TestClass类的定义,请在注释∥********2********后添加语句。(3)在类TestClass的派生类TestClass0的公有成员中定义析构函数TestClass0,请在∥********4********后添加。(4)设置类TestClassl的基类为TestClass类的定义,请在∥********4********后实现。本程序输出如下结果:TestClassclassconstructorTestClass0classconstructorTestClassonclassconstructorTestClass1classconstructorTestClass1classconstructorTestClassclassconstructorTestClass0classconstructorTestClassclassconstructor注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeClassTestClass{∥********1********public:TestClass(){cout<<“TestClassclassconstructor”<标准答案:(1)添加语句:char*name;intage;(2)添加语句:classTestClasS0:publicTestClass(3)添加语句:一TestClass0()(4)添加语句:classTestClass1:publicTestClass知识点解析:本题的功能是利用构造函数和析构函数中的输出语句,输出字符串。在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的main主函数开始入手,完成类的定义以及其成员函数。国家二级(C++)机试模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、有如下程序:#includeusingnamespacestd;intmain(){int*p;*p=9;cout<<"Thevalueatp:"<<*p;return0:}编译运行程序将出现的情况是()。A、编译时出现语法错误,不能生成可执行文件B、运行时一定输出:Thevalueatp:9C、运行时一定输出:Thevalueatp:*9D、运行时有可能出错标准答案:D知识点解析:题目程序中“int*p;”是定义了一个指针变量p,“*p=9;”是将p当前指向的指针赋为9。指针p在执行这个赋值操作前并没有初始化这个变量p,所以会有p未初始化的警告错误。2、下列对模板的声明中,正确的是()。A、templateB、templateC、templateD、template标准答案:C知识点解析:声明一个函数模板的格式为:template<模板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。3、若有下面的函数调用:fun(a+b,3,max(n-1,b))则fun的实参个数是()。A、3B、4C、5D、6标准答案:A知识点解析:本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、max(n—1,b)分别为其中的3个实参。故答案为A。4、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:私有继承方式为基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有,但派生类对象可以访问基类的保护成员,所以基类对象不能赋值给派生类对象。抽象类是指含有纯虚拟函数的类,所以选项D正确。5、要使程序执行后的输出结果为ABCD,应在横线处添加语句()。#includeusingnamespacestd;classA{public:A(){cout<<~A;}};classB:________{public:B0{cout<<’B’;}};classC:virtualpublicA{public:C(){cout<<’C’;)};classD:publicB,publicC{public:DO{cout<<’D’;}};voidmain(){Dobj;}A、publicAB、privateAC、protectedAD、virtualpublicA标准答案:D知识点解析:由主函数main入手,定义了类D对象obj。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为“ABCD”,依次为类A,类B,类C,类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。6、关于在调用模板函数时模板实参的使用,下列表述中正确的是()。A、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D、对于常规参数所对应的模板实参,任何情况下都不能省略标准答案:D知识点解析:在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“<>”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“<>”也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能7、对数组名作函数的参数,下面描述正确的是()。A、数组名作函数的参数,调用时将实参数组复制给形参数组B、数组名作函数的参数,主调函数和被调函数共用一段存储单元C、数组名作参数时,形参定义的数组长度不能省略D、数组名作参数,不能改变主调函数中的数据标准答案:B知识点解析:数组作为参数实参传递的赴数组的首地址。所以主调函数和被调函数共用一段存储单元。8、下列关于运算符重载的描述中,正确的是()。A、运算符重载可以改变运算符的操作数的个数B、运算符重载可以改变优先级C、运算符重载可以改变结合性D、运算符重载不可以改变语法结构标准答案:D知识点解析:重载的运算符仍要保持其原来的操作数、优先级和结合性不变。9、如下函数模板:templateTsquare(Tx){returnx*x;}其中T是()。A、函数形参B、函数实参C、模板形参D、模板实参标准答案:C知识点解析:本题考查模板函数的基本概念,根据模板函数的定义,T是模板形参,所以答案为C。10、下面是一个递归函数,其功能是使数组中的元素反序排列,横线处应填()。voidreverse(Int*a,intsize){if(size<2)return;intk=a[0];a[0]=a[size-1];a[size-1]=k;reverse(a+1,__________);}A、size<2B、size-2C、size-1D、size+1标准答案:B知识点解析:把数组的首尾交换后,对在第一位和最后一位之间的子数组执行同样的首尾交换操作,此子数组为原数组长度减去2,所以答案为size-2。11、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性标准答案:B知识点解析:线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。12、两个或两个以上的模块之间关联的紧密程度称为()。A、耦合度B、内聚度C、复杂度D、连接度标准答案:A知识点解析:耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素问彼此结合的紧密程度的度量。13、有如下程序:#includeusingnamespacestd;classB{public:virtualvoidshow(){cout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfunl(B*ptr){ptr->show();}voidfun2(13&ref){ref.show();}voidfun3(13b){b.show();}intmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);deletep;return0:}执行这个程序的输出结果是()。A、BBBB、BBDC、DBBD、DBD标准答案:C知识点解析:在某基类中声明为vjrtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类B的对象b、对象指针*p=newD以及类D的对象d;执行fun1会调用派生类的show函数,因为show函数为虚函数,而调用fun2、fun3仍然为基类的show函数,所以本题答案为C。14、下列有关类继承的叙述中,错误的是()。A、继承可以实现软件复用B、虚基类可以解决由多继承产生的二义性问题C、派生类构造函数要负责调用基类的构造函数D、派生类没有继承基类的私有成员标准答案:D知识点解析:3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。15、有如下类定义:classMyClass{intvalue;public:MyClass(intn):value(n){}intgetValue()const{returnvalue;}};则类MyClass的构造函数的个数是()。A、1个B、2个C、3个D、4个标准答案:B知识点解析:本题考查类的默认构造函数和自定义的构造函数。本题中MyClass(intn):value(n){}为自定义的构造函数,加上默认构造函数,一共有2个构造函数。16、下列有关类继承的叙述中,错误的是()。A、继承可以实现软件复用B、虚基类可以解决由多继承产生的二义性问题C、派生类构造函数要负责调用基类的构造函数D、派生类没有继承基类的私有成员标准答案:D知识点解析:3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。17、有如下程序:#include<iostream>usingnamespacestd;classBase{intx;public:Base(intn=0):x(n){cout<<n;}intgetX()const{returnx;}};classDerived:publicBase{inty;public:Derived(intm,intn):y(m),Base(n){cout<<m;}Derived(intm):y(m){cout<<m;}};intmain(){Derivedd1(3),d2(5,7);return0;}执行这个程序的输出结果是()。A、375B、357C、0375D、0357标准答案:C知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个对象d1,先执行基类的构造函数输出0,再执行派生类的构造函数输出3,然后定义了一个对象d2(5,7),其中需要调用基类的构造函数输出7,最后输出5,所以答案为C。18、两个或两个以上的模块之间关联的紧密程度称为()。A、耦合度B、内聚度C、复杂度D、连接度标准答案:A知识点解析:耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。19、有如下类定义:classMyClass{public:MyClass(doubled=0.0):val(d){}_______________//类型转换运算符double的定义private:doubleval;};若要使语句序列MyClassx(2.1);cout<A、operatordouble()const{retumval;}B、friendoperatordouble()const{returnval;}C、doubleoperator()const{returnval;}D、frienddoubleoperator()const{retumval;}标准答案:A知识点解析:题目需要定义类型转换运算符double,类型转换运算符是一种特殊的类成员函数,它定义将类类型的值转变为其他类型值,由于转换函数必须是成员函数,选项B、D错误;另外转换函数不能指定返回类型,并且形参列表必须为空,选项C错误;所以double类型转换运算符的定义为:operatordouble()const{returnval;}.答案为A。20、有如下类定义:classMyClass{intk;public:MyClass(intn):k(n){}};则下列数组定义中,错误的是()。A、MyClassm414]={MyClass(1),MyClass(2),MyClass(3),MyClass(4)};B、MyClassm4[]={MyClass(1),MyClass(2),MyClass(3)};C、MyClassm4[4]={1,2,3};D、MyClassm4[]={1,2,3};标准答案:C知识点解析:MyClass提供一个参数为整型变量的构造函数,构造对象时,使用参数初始化成员k的值;选项A定义一个包含4个元素的数组,数组元素的类型是MyClass类型,并且对该数组的4个元素分别显示调用构造函数完成初始化,选项A正确;同理,选项B定义数组m4,由于初始化值个数为3个,所以系统默认该数组长度为3,选项B正确;选项D定义数组m4,使用3个整数初始化数组元素,此时系统调用构造函数将整数隐式转换成MyClass类型,并默认数组长度为3,选项D正确;选项C同样定义数组m4,它包含4个元素,初始化时,同样使用3个整数1,2,3初始化前3个元素,系统调用构造函数将整数隐式转换成MyClass类型,来完成前3个元素的初始化,但是由于MyClass没有默认构造函数,所以第4个元素不能完成构造,选项C错误,本题答案为C。21、若有下列定义intx[10],*pt=x;则对x数组元素的正确引用是()。A、*&x[10]B、*(x+3)C、*(pt+10)D、pt+3标准答案:B知识点解析:在C语言中,数组名是一个存放地址值的指针变量名,其地址值是数组第一个元素的地址,也是数组所占一串连续存储单元的起始地址。因为数组的下标是从0开始的,所以选项B中,x+3表示数组x[10]中的第四个元素的地址,在其前面加上星号,表示是数组x[10]中的第四个元素中的值。所以正确答案为选项B。选项A、C的地址范围超出级数x[10]中元素的地址范围,选项D表示的是地址值。22、下列关于类模板的叙述中,错误的是()。A、类模板描述的是一组类B、可以为类模板的参数设置默认值C、类模板的成员函数可以是函数模板D、定义类模板时只允许有一个模板参数标准答案:D知识点解析:类模板是一系列相关类的模板或样板,这些类的成员组成相同,成员函数的源代码形式相同,只有成员的类型以及成员函数的参数和返回值的类型不同。类模板描述的是一组类,选项A正确;模板形参可以是虚拟类型形参也可以是常规形参,与函数模板不同,类模板声明的常规参数可以带有默认值,选项B正确;类模板的成员函数都是模板函数,选项C正确;定义类模板时,模板形参表声明是由一个或多个模板形参组成的,所以模板参数个数是没有限定的,选项D错误。答案为D选项。23、下列有关复制构造函数的描述中错误的是()。A、复制构造函数是一种构造函数B、复制构造函数与一般的构造函数一样,可以设置多个形参C、每一个类中都必须有一个复制构造函数D、复制构造函数的功能是用一个已知对象去初始化一个正在创建的对象。标准答案:B知识点解析:复制构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它不能指定函数返回类型;只有一个参数,是同类的某个对象名的引用。每一个类中都必须有一个复制构造函数,如果类中未声明,则编译器会自动生成一个公有的复制构造函数。24、一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:根据题干可知,每个工作人员都可以使用多台计算机,而一台计算机可以被多个工作人员使用,因此是多对多的联系。25、下列有关类的表述中,正确的是A、含有虚函数的类不能被实例化B、派生类不能访问基类的保护成员C、派生类只能隐含调用基类的构造函数D、纯虚函数没有函数体标准答案:D知识点解析:含有纯虚函数的类不能被实例化,选项A错误;基类的保护成员就是为了派生类的访问而设计的,选项B错误;派生类构造函数的初始化列表通常都要显式调用基类的构造函数,选项C错误;当基类中不能为虚函数给出一个有意义的实现时,将其声明为纯虚函数,所以纯虚函数没有定义函数体,选项D正确;答案为D。26、下列运算符中,不能重载为类的友元函数的运算符是A、+B、[]C、newD、&&标准答案:B知识点解析:C++规定,赋值操作符"="、下标操作符"[]"、调用操作符"()"和成员访问箭头操作符"->"必须重载为成员函数,将这些操作符定义为非成员函数将在编译时标记为错误,友元函数是非成员函数,答案为B。27、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B。28、下列有关类继承的叙述中,错误的是()。A、继承可以实现软件复用B、虚基类可以解决由多继承产生的二义性问题C、派生类构造函数要负责调用基类的构造函数D、派生类没有继承基类的私有成员标准答案:D知识点解析:3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。29、已知主函数中通过如下语句序列实现对函数模板swap的实例调用:inta[10],b[10];swap(a,b,10);下列对函数模板swap的描述中,会导致上述语句序列发生编译错误的是A、模板形参表中有1个参数B、模板形参表中有2个参数C、模板形参表中有1个或2个参数D、模板形参表中没有任何参数标准答案:D知识点解析:函数模板swap有两个数组地址参数a,b,它们数组元素的类型相同;所以模板形参表中可以使用1个参数定义为int,来实例a,b的类型,也可以使用2个参数,分别实例a,b的类型;选项D错误,答案为D。30、在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是A、()B、[]C、<>D、{}标准答案:C知识点解析:本题考查模板的定义,使用的括号为<>,所以答案为C选项。31、有如下程序:#includeusingnamespacestd;intmain(){inta[6]={27,57,20,42,56,18};ints1,s2;s1=s2=a[0];for(int*p=a+1;p-a<6;p++){s1=s1>*p?*p:s1;s2=s2<*p?*p:s2;}cout<A、75B、76C、69D、84标准答案:A知识点解析:考查指针和for循环语句,可以看出本题for的作用是将数组元素中最大值赋值给s1,最小值赋值给s2,而数组中最大值57,最小值18,之和为75。所以A选项正确。32、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:派生类可以访问基类的保护成员,而不能访问基类的私有成员。作为虚基类的类可以被实例化。虚函数如果没有派生类中重新实现,那么仍然使用基类的成员函数。33、下列关于类的析构函数的叙述中,错误的是A、定义析构函数时不能指定返回值B、析构函数的函数名就是类名前加上字符~C、析构函数可以重载D、在一个类中如果没有定义析构函数,系统将自动生成一个析构函数标准答案:C知识点解析:本题考查类的析构函数的定义,析构函数(destructor)与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后"的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud(),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以C选项错误。34、有如下类定义:classBag{public:Bag(strings="Small",stringcr="Black"):size(s),color(cr){}~Bag(){}private:stringsize,color;};若执行语句Bag*ptr,my,colleage[2],&sister=my;则Bag类的构造函数被调用的次数是A、2次B、3次C、4次D、5次标准答案:B知识点解析:本题考查默认析构函数,题中定义了一个对象和包含2个元素的一维对象数组,而对象指针不占用空间,对象引用也不会占用内存空间,所以不调用构造函数,那么析构函数就执行3次,答案为B。35、下面不属于对象主要特征的是A、唯一性B、多态性C、可复用性D、封装性标准答案:C知识点解析:对象的基本特点如下:可知C选项正确。36、在数据库系统中,数据模型包括概念模型、逻辑模型和A、物理模型B、空间模型C、时间模型D、数据模型标准答案:A知识点解析:数据模型按照不同的应用层次分为3种类型:概念数据模型、逻辑数据模型、物理数据模型,故A选项正确。37、下列语句中,错误的是()。A、constintbuffer=256;B、constdouble*point;C、intconstbuffer=256;D、double*constpoint;标准答案:D知识点解析:const是一个C++关键字,用于限定不允许改变的变量。选项B是指向常量的指针,定义时可以不初始化;选项D是指针常量,定义时必须初始化。故答案为D。38、下列有关类成员的叙述中,错误的是A、友元函数不是类的成员函数B、类成员的默认访问权限是私有的C、类成员函数必须声明为公有的D、类的静态数据成员可以是常成员标准答案:C知识点解析:友元函数不是类的成员函数,选项A正确;类成员的默认访问权限是私有的,选项B正确;类的静态数据成员可以使常成员,选项D正确;类的成员函数可以声明为:public、protected和private,选项C错误;答案为C。39、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。40、下列关于运算符重载的叙述中,错误的是()。A、运算符重载函数不能改变运算符原有的优先级B、重载运算符至少有一个操作数的类型是用户定义类型C、运算符重载函数能够改变运算符原有的操作数个数D、有的运算符可以作为非成员函数重载标准答案:C知识点解析:C++中,运算符重载的规则有:不允许定义新的运算符;重载不能改变运算符运算对象(操作数)的个数;重载不能改变运算符的优先级;重载不能改变运算符的结合性;运算符重载函数可以是类的成员函数,有些运算符也可以作为非成员函数重载;重载运算符至少有一个操作数的类型是用户定义类型;综上选项A、B、D正确;选项C错误,本题答案为C。二、基本操作题(本题共1题,每题1.0分,共1分。)41、请使用VC6或使用【答题】菜单打开考生文件夹prog1下的工程prog1,该工程中包含程序文件main.cpp,其中有Salary(“工资”)类和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句行有错误,请加以改正。改正后程序的输出结果应为:应发合计:3500应扣合计:67.5实发工资:3432.5注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#includeusingnamespacestd;classSalary{public:Salary(constchar*id,doublethe_base,doublethebonus,doublethe_tax)//ERROR**********found**********:thebase(base),thebonus(bonus),thetax(tax){staffid=newchar[strlen(id)+1];strcpy(staffid,id);}//ERROR**********found**********~Salary(){delete*staffid;)doublegetGrossPay()const{returnbase+bonus;}//返回应发项合计doublegetNetPay()const{returngetGrossPay()_tax;}//返回实发工资额private:char*staffid;//职工号doublebase;//基本工资doublebonus;//奖金doubletax;//代扣个人所得税};intmain(){Salarypay("888888",3000.0,500.0,67.50);cout<<"应发合计:"<标准答案:(1):base(the_base),bonus(the_bonus),tax(the_tax)(2)~Salary(){delete[]staff_id;}(3)cout<<"实发工资:"<知识点解析:(1)主要考查考生对构造函数的掌握情况,构造函数的成员初始列表要把形参放在括号内。(2)主要考查考生对析构函数的掌握情况,析构函数使用delete释放指针,delete后要跟标识符“[]”。(3)主要考查考生对成员函数调用的掌握情况,调用类的成员函数使用标识符“.”,而不是作用域符“::”。三、简单应用题(本题共1题,每题1.0分,共1分。)42、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数sum(intA[NUM][NUM],intn)实现的功能是计算矩阵中所有非质数数字的和。提示:函数isPrime(intn)的功能是判定当前数字是否为质数,如果是则返回true。注意:不能修改程序的其他部分,只能修改sum()函数。#include#include#defimeNUM50intA[NUM][NUM]={{10,13,59,70,6},{2,40,89,92,9},{14,55,71,11,19},{79,68,83,97,101},{102,10001,23,45}};boolisPrime(intn){if(n==1)returnfalse;if(n==2)retumRtrue;for(inti=2;i标准答案:intre=0;for(inti=0;i知识点解析:函数sum(intA[NUM][NUM],intn)的功能是实现计算矩阵A[NUM][NUM]中所有非质数数字的和,在计算累加和之前需先判断该数是否是质数,不是质数则累加起来,可用循环来实现累加求和。四、综合应用题(本题共1题,每题1.0分,共1分。)43、请使用VC6或使用【答题】菜单打开考生文件夹prog3下的工程prog3,其中包含了类TaxCalculator(“个税计算器”)和主函数main的定义。创建“个税计算器”需要接收税率表信息和起征额信息。在main函数中,通过两个数组创建了如下的税率表:利用这个税率表创建“个税计算器”时,假定起征额为2000元(即不超过2000元的所得不征收个人所得税)。请补充完成计算应纳个人所得税额的成员函数getTaxPayable,其中的参数income为月收入。此程序的正确输出结果应为:月收入为800元时应缴纳个人所得税0元月收入为1800元时应缴纳个人所得税0元月收入为2800元时应缴纳个人所得税55元月收入为3800元时应缴纳个人所得税155元月收入为4800元时应缴纳个人所得税295元月收入为5800元时应缴纳个人所得税455元注意:只能在函数getTaxPayable中的“//**********333**********”和“//**********666**********”之间填入若干语句,不要改动程序中的其他内容。//TaxCalculator.h#include#includeusingnamespacestd;classTaxCalculator{public:TaxCalculatorfdoublethe_limits[],doubletherates[],intthe_length,doublethethreshold):lower1imits(newdouble[the_length]),rates(newdouble[the_lengthj),list_len(the_length),threshold(thethreshold){for(inti=0;i=0){//**********333**********//**********666**********--i;}returntax_payable;}voidTaxCalculator::showTaxPayable(doubleincome)const{cout<<"月收入为"<标准答案:if(1ncome<=2000)//如果收入小于2000returntaxpayahle;//直接texpayable(初始代为零)if(taxable>lowerlimits[i]){//如果taxable(收入超出起征额的部分)大于lowerlimits[i]阶段最低限额taxpayable+=(taxable—lowerlimits[i])*rates[i];//把起过阶段最低限额的部分乘以该阶段的税率后,加到taxpayable(个人所得税)taxable=lowerlimits[i];//把fowerlimits[i]赋值于taxable}知识点解析:主要考查考生对成员函数的掌握情况,根据题目要求可知,完成计算应纳个人所得税额的成员函数getTaxPayable,其中参数income为月收入。同时题目还表明:不超过2000元的所得不征收个人所得税。因此先用if语句判断是否要征收个人所得税。然后根据题目所给表格,来判断收入多少及应该收多少个人所得税。国家二级(C++)机试模拟试卷第3套一、选择题(本题共37题,每题1.0分,共37分。)1、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性标准答案:B知识点解析:线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。2、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。3、软件测试的目的是()。A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。4、在软件开发中,需求分析阶段产生的主要文档是()。A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择D。5、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。6、面向对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论