




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C++)笔试模拟试卷20(共9套)(共448题)国家二级(C++)笔试模拟试卷第1套一、公共基础选择题(本题共34题,每题1.0分,共34分。)1、程序流程图中带有箭头的线段表示的是A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:在程序流程图中,图框表示各种操作的类型;图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流,而带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系,在模块之间用带有箭头的线段表示调用关系。2、结构化程序设计的基本原则不包括A、多态性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:暂无解析3、软件设计中模块划分应遵循的准则是A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:暂无解析4、在软件开发过程中,需求分析阶段产生的主要文档是A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:暂无解析5、算法的有穷性是指A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法具有:①有穷性。一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,每一步都可在有限时间内完成,即运行时问是有限的。②确定性。算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。③可行性。一个算法是可行的,即算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。④输入。一个算法有0个或多个输入,这些输入取自于某个特定的对象的集合。⑤输出。一个算法有一个或多个输出。6、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:暂无解析7、下列关于栈的叙述正确的是A、栈按“先进先出”的原则组织数据B、栈按“先进后出”的原则组织数据C、只能在栈底插入数据D、不能删除数据标准答案:B知识点解析:暂无解析8、在数据库设计中,将E-R图转换成关系数据模型的过程属于A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:数据库的逻辑设计分为:①将概念模型转换成一般的数据模型;②将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。把概念模型转换成关系数据模型就是把E~R图转换成一组关系模式。9、设有表示学生选课的3张表:学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为A、课号,成绩B、学号,成绩C、学号,课号D、学号,姓名,成绩标准答案:C知识点解析:暂无解析10、下列有关函数重载的叙述中,错误的是A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:当两个或者两个以上的函数共用一个相同的函数名时,称为函数的重载。函数重载时函数名必须相同。函数的参数个数和类型不同;函数的返回值类型可以相同,也可以不同。11、下列有关类成员的叙述中,正确的是A、友元函数是类的成员函数B、类成员的默认访问权限是私有的C、类成员函数必须声明为公有的D、类的静态数据成员不能是常成员标准答案:B知识点解析:即可以是不属于任何类的非成员函数,也可以是另外一类的成员函数,统称为成员函数。友元函数不是当前类的成员函数,而是独立于当前类的外部函数。类成员函数可以声明为任何访问权限。类的静态成员可以定义为常成员,只是其值不能改变。12、下列有关类继承的叙述中,错误的是A、继承可以实现软件复用B、虚基类可以解决由多继承产生的二义性问题C、派生类构造函数要负责调用基类的构造函数D、派生类没有继承基类的私有成员标准答案:D知识点解析:派生类继承基类,即继承了基类的所有成员,包括公有成员、私有成员和保护成员,只是私有成员在派生类中不能被访问。13、下列有关运算符重载的叙述中,正确的是A、运算符重载是多态性的一种表现B、C++中可以通过运算符重载创造新的运算符C、C++中所有运算符都可以作为非成员函数重载D、重载运算符时可以改变其结合性标准答案:A知识点解析:进行运算符重载时,不能改变运算符的优先级和结合特性,也不能创造新的运算符,“=”、“[]”、“()”运算符不能作为非成员函数重载。14、下列有关模板的叙述中,正确的是A、函数模板不能含有常规形参B、函数模板的一个实例就是一个函数定义C、类模板的成员函数不能是模板函数D、用类模板定义对象时,绝对不能省略模板实参标准答案:B知识点解析:函数模板和类模板均允许使用多个类型参数,也允许常规形参出现。类模板的成员函数可以为模板函数。使用模板定义对象时,类模板的实际类型名不能省略,而模板的实参表则不一定必须有。15、下列有关C++流的叙述中,错误的是A、C++操作符setw设置的输出宽度永久有效B、C++操作符endl可以实现输出的回车换行C、处理文件I/O时,要包含头文件fstreamD、进行输入操作时,eof()函数用于检测是否到达文件尾标准答案:A知识点解析:暂无解析16、下列符号中能够作为C++标识符的是A、constB、2aC、_shapeD、-connt标准答案:C知识点解析:C++中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母、下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。C++变量区分大小写。17、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};则下列说法中错误的是A、枚举常量YELLOW的值为1B、枚举常量RED的值为6C、枚举常量BLACK的值为10D、枚举常量WHITE的值为1标准答案:D知识点解析:枚举变量中的枚举元素系统是按照常量来处理的。如果没有进行元素赋值操作,那么元素将会被系统从0开始自动递增地进行赋值操作,但是,如果一旦定义了某一个元素的值,那么系统将对下一个元素进行按前一个元素的值加1操作,故wHITE=1,YELLOW=2,GREEN=5,RED=6,BLACK=10。18、执行下列语句段后,输出字符“*”的个数是for(inti=50;i>1;i-=2)tout<<’*’;A、24B、25C、26D、50标准答案:B知识点解析:暂无解析19、有如下定义:inta[5]={1,3,5,7,9},*p=a;下列表达式中不能得到数值5的是A、a[2]B、a[3]C、*(p+2)D、*p+4标准答案:B知识点解析:暂无解析20、已知函数f的原型是voidf(int*a,long&B);,变量v1、v2的定义是:intv1:longv2:下列调用语句中正确的是A、f(v1,&v2);B、f(v1,v2);C、f(&vl,&v2);D、f(&vl,v2);标准答案:D知识点解析:暂无解析21、有如下类定义:classPoint{private:staticinthow_many;};______how_many=0;要初始化Point类的静态成员how_many,在下画线处应填入的内容是A、intB、staticintC、intPoint::D、staticintPoint::标准答案:C知识点解析:暂无解析22、在下列关键字中,不能用来表示继承方式的是A、privateB、staticC、publicD、protected标准答案:B知识点解析:暂无解析23、已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(ValueV,inti=0);D、Valueoperator+(Valuev=value,inti=0);标准答案:B知识点解析:暂无解析24、下面是一个模板声明的开始部分:template<typenameT>double…由此可知A、这可能是一个函数模板的声明B、这可能是一个类模板的声明C、这既可能是一个函数模板的声明,也可能是一个类模板的声明D、这肯定是一个错误的模板声明标准答案:A知识点解析:函数模板声明的格式:template<typename类型参数>返回类型函数名(模板形参表){函数体}类模板的声明格式:template<typename类型参数>class类名{类成员声明}故答案为A。25、有如下4个语句:①eout<<’A’<<setfill(’$’)<<lefl<<setw(7)<<’B’<<endl;②eout<<setfill(’*’)<<lefl<<setw(7)<<’A’<<’B’<<endl;③eout<<’A’<<setfill(’*’)<<right<<setw(7)<<’B’<<endl;④eout<<setfill(’*}’)<<right<<setw(7)<<’A’<<’B’<<endl;其中能显示A******B的是A、①和③B、①和④C、②和③D、②和④标准答案:C知识点解析:预定义操作符中,setfill(C)设置c为填充字符。setw(n),n为宽度;left为左对齐,右填充,right为右对齐,左填充。所有的预定义操作符均只对紧跟其后的输出语句起作用。26、有如下类定义:ClaSSMyClass{intvalue;public:MyClass(intn):value(n){}intgetValue()const{returnvalue;}l;则类MyClass的构造函数的个数是A、1个B、2个C、3个D、4个标准答案:A知识点解析:对于类的构造函数,如果有显式定义,那么在构造该类对象时就自动调用显式定义的构造函数,否则系统将给类一个默认的空构造函数。27、有如下类和对象的定义:classConstants{public:staticdoublegetPI(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是A、cout<<constants->getPI();和cout<<Constants::getPI();B、cout<<constants.getPI();和cout<<Constants.getPI();C、cout<<constants->getPI();和cout<<Constants->getPI();D、cout<<eonstants.getPI();和cout<<Constants::getPI();标准答案:D知识点解析:Constants定义了一个类对象,对象对类的成员函数引用时,用的是“.”而不是“->”操作符。或者在类外部对类中的成员函数进行显式调用为:类名::成员函数名()28、有如下程序:#include<iostream>usingnamespaeestd;classVAC{public:intf()COUSt{return3;}intf(){return5;}};intmain(){VACvl;constVACv2;eout<<v1.f()<<v2.f();return0;}程序的输出结果是A、53B、35C、55D、33标准答案:A知识点解析:暂无解析29、有如下类声明:classBase{protected:intamount;public:Base(intn=0):araount(n){}intgetAmount()const{retumamount;}};classDerived:publicBase{protected;intvalue;public:Derived(intm,intn):value(n1),Base(n){}intgetData()const{returnvalue+amount;}};已知x是一个Derived对象,则下列表达式中正确的是A、x.value+x.getAmount()B、x.getData()-x.getAmount()C、x.getData()-x.amountD、x.value+x.amount标准答案:B知识点解析:暂无解析30、有如下程序:#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){tout<<m;}Derived(intm):y(m){cout<<m;}};intmain(){Deriveddl(3),d2(5,7);return0;}程序的输出结果是A、375B、357C、0375D、0357标准答案:C知识点解析:有如下程序:#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){tout<<m;}Derived(intm):y(m){cout<<m;}};intmain(){Deriveddl(3),d2(5,7);return0;}程序的输出结果是31、下列有关抽象类和纯虚函数的叙述中,错误的是A、拥有纯虚函数的类是抽象类,不能用来定义对象B、抽象类的派生类若不实现纯虚函数,它也是抽象类C、纯虚函数的声明以“=0;”结束D、纯虚函数都不能有函数体标准答案:D知识点解析:纯虚函数的声明格式为:virtual函数类型函数名(参数表)=0拥有纯虚函数的类就叫抽象类,如果在派生类中不实现纯虚函数,则派生类也是抽象类。纯虚函数在派生类可以被重新定义,即可以拥有函数体。32、有如下程序:#include<iostream>usingnamespacestd;classAmount{intamount;public:Amount(intn=0):amount(n){}intgetAmount()const{returnamount;}Amount&operator+=(AmountA){amount+=a.amount;return;}};intmain(){Amountx(3),y(7);x+=y:cout<<x.getAmount()<<endl;return0;}已知程序的运行结果是10,则下画线处缺失的表达式是A、*thisB、thisC、&amountD、amount标准答案:A知识点解析:暂无解析33、下列语句分别是不同程序中的第一个输入/输出语句,若去掉其中的“<<left”,则输出效果将发生变化的是A、eout<<left<<setfill(’*’)<<357;B、cout<<left<<setw(5)<<357;C、eout<<left<<setw(5)<<"ABCDE";D、eout<<left<<"ABCDE";标准答案:B知识点解析:暂无解析34、有如下程序:#include<iostream>usingnamespacestd;classGA{public:virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){eout<<g.f();}voiddisplay(GA&g){cout<<g.f();}intmain(){GAa;show(A);display(A);GBb;show(B);display(B);return0;}程序的输出结果是A、1111B、1211C、1112D、1212标准答案:C知识点解析:基类对象作为实参进行传递时,无论使用的是对象还是对象引用作为形参,都只能在该函数中调用基类成员函数,因此当GAa作为实参时,调用的只能是GA的成员函数。而当派生类对象作为实参传递时,函数的形参则要分情况而定:如果是普通的对象传递,则是值传递,那么在函数中也只能调用基类的成员函数;如果是对象引用作为形参,则是地址传递,这个时候函数就可以调用重载后的虚成员函数。二、公共基础填空题(本题共14题,每题1.0分,共14分。)35、软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是______。标准答案:无歧义性知识点解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。其中最重要的特性是无歧义性,即需求规格说明书应该是精确的、无二义的,需求说明书越精确,则以后出现错误、混淆、反复的可能性越小。36、在两种基本测试方法中,______测试的原则之一是保证所测试的模块中每一个独立路径至少要被执行一次。标准答案:白盒知识点解析:白盒测试的基本原则:保证所测模块中每一个独立路径至少执行一次;保证所测模块所有判断的每一分支至少被执行一次;保证所测模块每一循环都在边界条件和一般条件下至少被各执行一次;验证所有内部数据结构的有效性。按照白盒测试的基本原则,“白盒”法是穷举路径测试。37、线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的______存储结构。标准答案:链式知识点解析:数据结构包括数据的逻辑结构和存储(物理)结构,其中逻辑结构分为线性结构和非线性结构,存储结构包括顺序结构和链式结构。在循环队列中,队尾的指针指向队首元素,是队列的链式存储结构。38、对下列二又树进行中序遍历的结果为______。标准答案:ACBDFEHGP知识点解析:二叉树中序遍历的含义:首先按中序遍历根结点的左子树。然后访问根结点,最后按中序遍历根结点的右子树。中序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知,中序遍历的结果是ACBDFEHGP。39、若有定义语句:inta=3,b=2,c=1;,则表达式b<b?a:b的值是______。标准答案:2知识点解析:暂无解析40、执行下列语句,变量sum的值是______。intsum=0;for(inti=1;i<=3;i++)for(intj=1;j<=i;j++)sum++;标准答案:6知识点解析:暂无解析41、已知有函数f的定义如下:intf(){staticints=0;s+=2:returns;}则在某程序中第二次执行函数调用语句f();时,函数f的返回值是______。标准答案:4知识点解析:暂无解析42、已知如下程序的输出结果是23,请将画线处缺失的部分补充完整。#include<iostream>usingnamespacestd;classMyClass{public:voidPrint()const{eout<<23;}};intmain(){MyClass*P=newMyClass();______.Print();return0;}标准答案:(*p)知识点解析:暂无解析43、有如下程序:#include<iostream>usingnamespaeestd;classA{public:A(){cout<<"A";}~A(){cout<<"A";}};classB{Aa;public:B(){cout<<"B";}~B()tcout<<"B";}};intmain(){Bb;return0;}程序的输出结果是______。标准答案:ABBA知识点解析:暂无解析44、请在如下程序中的空格处填写正确的语句;#include<iostream>usingnamespaeestd;c]assBase{public:voidfun(){cout<<"Basefun"<<endl;}};classDerived:publicBase{public:voidfun(){______//调用基类的函数fun()cout<<"Derivedfun"<<endl;}{;标准答案:Base::fun()知识点解析:暂无解析45、已知类sample是一个抽象类,其成员函数display是无形参、无返回类型的纯虚函数,请完成其声明:sample{public:sample(){};______};标准答案:virtualvoiddisplay()=0;知识点解析:暂无解析46、有以下复数类的声明,请补充完整。Classcomplex{doublereal;//实部doubleimag;//虚部public:complex(doublex,doubley){real=x:imag=y;}complexoperator+(complexe){//重载加法运算符“+”returncomplex(______)}};标准答案:real+c.real,imag+c.imag知识点解析:暂无解析47、请将如下程序补充完整,使得输出结果为:bbaa。#include<iostream>usingnaluespacestd;classA{public:______{eout<<"aa";}};classB:publicA{public:~B(){eont<<"bb";}};intulain(){B*P=newB;deleteP;return0;}标准答案:~A()知识点解析:派生类和基类的析构函数调用顺序是先调用派生类的析构函数,然后调用基类的析构函数,打印“bb”说明已经在调用派生类的析构函数,则要继续打印“aa”,显然就只有定义在基类的析构函数中去打印,故答案为~A()。48、请将下列栈类Stack补充完整。classStack{private:intpList[100];//int数组,用于存储占的元素inttop;//栈顶元素(数组下标)public:Stack():top(0){}voidPush(constint&item);//新元素item压入栈intPop(void);//将栈顶元素弹出栈};voidStack::Push(constint&item){if(top==99)exit(1);//如果栈满,则程序终止top++;//栈顶指针增1______;}intStack::Pop(){if(top<0)exit(1);//如果栈空,则程序终止returnPlist[top--];}标准答案:plist[top]=item知识点解析:暂无解析国家二级(C++)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、在计算机中,算法是指()。A、查询方法B、加工方法C、解题方案的准确而完整的描述D、排序方法标准答案:C知识点解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。2、下列叙述中,不属于测试的特征的是()。A、测试的挑剔性B、完全测试的不可能性C、测试的可靠性D、测试的经济性标准答案:C知识点解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。软件测试有3个重要特征:测试的挑剔性、完全测试的不可能性及测试的经济性。没有测试的可靠性这一说法。3、数据处理的最小单位是()。A、数据B、数据元素C、数据项D、数据结构标准答案:C知识点解析:数据处理的最小单位是数据项。4、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户、开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书便于用户、开发人员进行理解和交流,反映出用户问题的结构,可以作为软件开发三作的基础和依据,而且可以作为确认测试和验收的依据。它是需求分析的结果,而不是为了便于卉发人员进行需求分析。因此正确答累是选项D。5、对下列二叉树进行中序遍历的结果是()。A、ACBDFEGB、ACBDFGEC、ABDCGEFD、FCADBEG标准答案:A知识点解析:二叉树的遍历有3种:前序、中序和后序。中序遍历首先遍历左于树或左子结点,然后访问根结点,最后遁历右子树或右子结点。分析本题二又树,对其进行中序遍历,结果为ACBDFEG。6、SQL语言又称为()。A、结构化定义语言B、结构化控制语言C、结构化查询语言D、结构化操纵语言标准答案:C知识点解析:暂无解析7、下列选项中不属于结构化程序设计方法的是()。A、自顶向下B、逐步求精C、模块化D、可复用标准答案:D知识点解析:可复用属于面向对象程.序设计方法,其它选项属于结构化程序设计方法。8、下列不是软件工程基本目标的是()。A、付出较低的维护费用B、达到要求的功能C、不管时间限制,只要最终把用户要求的产品交出来D、产品的性能比较好标准答案:C知识点解析:软件工程的基本目标是:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移值,需要较低的维护费用;能按时完成开发,及时交付使用。9、以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。A、概念数据库B、用户数据库C、物理数据库D、逻辑数据库标准答案:C知识点解析:以概念模式为框架所组成的数据叫概念数据库,以外模式为框架所组成的数据库叫用户数据库;以内模式为框架所组成的数据库叫物理数据库。这3种数据库只有物理数据库是真实存在于计算机外存中。10、数据库设计包括两个方面的设计内容,它们是()。A、概念设计和逻辑设计B、模式设计和内模式设计C、内模式设计和物理设计D、结构特性设计和行为特性设计标准答案:A知识点解析:数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。二、选择题(本题共25题,每题1.0分,共25分。)11、下列关于运行符重载的描述中,正确的是()。A、运算符重载可以改变操作数的个数B、运算符重载可以改变操作数的优先级C、运算符重载可以改变运算符的结合性D、运算符重载可以使运算符实现特殊功能标准答案:D知识点解析:C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字opera-tor。C++中通过重新定义运算符,使它能够用于特定类的对象执行特定的功能。但是用户重新定义运算特,不改变原运算符的操作符个数、优先级和结合性。同时运算符重载后,也不改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符只能重载为双目运算符。12、当需要将一个函数boolisnumber(charc)声明为内联函数时,则此内联函数的函数原型为()。A、enumboolisnumber(charc);B、defineboolisnumber(charc);C、inlineboolisnumber(charc);D、extemboolisnumber(charc);标准答案:C知识点解析:本题考查的是内联函数的相关知识点。函数原型应指出函数名、返回值类型以及在调用函数时知心朋友提供的参数的个数和类型,因为要声明为内联函数,故应加inline关键宇。13、有如下数组声明:intnumC[10],下标值引用错误的是()。A、num[10]B、num[5]C、nam[3)D、num[0]标准答案:A知识点解析:数组定义中的数字指的是数组的大小,而下标是从。开始的,所以数组的最后一个元素是hum[9]。14、对于拷贝构造函数和赋值操作的关系,正确的是()。A、拷贝构造函数和赋值操作是完全一样的操作B、进行赋值操作时,会调用类的构造函数C、当调用拷贝构造函数时,类的对象正在被建立并被初始化D、拷贝构造函数和赋值操作不能在同一个类中被同时定义标准答案:C知识点解析:在赋值操作中,将发生对象的拷贝操作,但并不说明两者是完全一样的。一般情况下,如果给类定义了赋值操作符,则应该同时定义合适的拷贝构造函数,除非系统默认生成的拷贝构造函数满足赋值操作。实际上,系统默认的拷贝构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用中,需要程序员重新定义拷贝构造函数。15、有如下函数模板声明:template<typenameT>TMax(Ta,Tb){return(a>=b)?a:b;}下列对函数模板Max()的调用中错误的是()。A、Max(3.5,4.5)B、Max(3.5,4)C、Max(double)(3.5,4.5)D、Max<double>(3.5,4)标准答案:B知识点解析:引用模板函数和引用一般的函数在语法形式上没有任何区别。说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。16、已知在一个类体中包含如下函数原型:VOLUMEOPERATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是()。A、这是运算符-的重载运算符函数B、这个函数所重载的运算符是一个一元运算符C、这是一个成员函数D、这个函数不改变类的任何数据成员的值标准答案:B知识点解析:本题考核运算符的重载。题中语句为运算符“-”是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。17、下面说法正确的是()。A、内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B、内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C、类的内联函数必须在类体内定义D、类的内联函数必须在类体外通过加关键字inline定义标准答案:B知识点解析:内联函数用inline修饰,用于取代C语官中的宏定义。inline是个建议机制而不是强制机制,也就是说,程序员可以指定任意函数为inline函数,但是编译器会根据系统情况来决定是否将其inline处理。对于较大的函数,编译器往往会取消其inline特性。inline函数的特点之一就是执行速度快,他实质是在编译时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场等开销,提高了效率。在类体内定义的成员函数,自动被编译器当做内联函数处理,在类体外定义的成员函数,如果用inline修饰,编译18、下列关于虚函数与函数重载区别的叙述中不正确的是()。A、函数说明形式上不同B、函数重载允许是非成员函数,虚函数只能是成员函数C、函数重载的调用依据参数和类型的差别,虚函数则依据对象D、函数重载的本体可以在类外定义,虚函数不可以标准答案:D知识点解析:A项,B项,C项均为虚函数与函数重载的不同之处。但有一点它们是相同的:在类内外定义均可。故D项错误。19、控制格式输入/输出的操作中,设置域宽的函数是()。A、WSB、octC、setfilt(int)D、setw(int)标准答案:D知识点解析:本题需要考生记忆一些输入输出控制操作子,oct为八进制,setfill为设置填充符,setw为设置域宽。20、继承机制的作用是()。A、信息隐藏B、数据封装C、定义新类D、数据抽象标准答案:C知识点解析:数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。21、下列关于this指针的叙述中,正确的是()。A、任何与类相关的函数都有this指针B、类的成员函数都有this指针C、类的友元函数都有this指针D、类的非静态成员函数才有this指针标准答案:D知识点解析:本题考查的是this指针的使用。类的每一个成员函数都有一个隐含的常量指针,即this指针。类的静态成员函数不能含有this指针,因为this指针是一个指向本对象的指针。22、下面关于C++流的叙述中,正确的是()。A、cin是一个输入流对象B、可以用ifstream定义一个输出流对象C、执行语句序列char*y=“PQMN”;cout<<y;将输出字符串”PQMN”的地址D、执行语句序列charx[80];cin.getline(x,80);时。若键入“Happynewyear”,则,中的字符串是“Happy”标准答案:A知识点解析:本题考查C++洗的概念和I/()的格式化。cln是lstream类的对象,即输入流对象。ifstream是输入文件流类不能定义个输出流对象。getline函数功能是允许从输入流中读取多个字符,并且允许指定输入终止,在读取完成后,从读取的内容中删除读终止字符,所以D选项中的语句序列后x中字符串应该是”Happynewyear”。23、类MyClass的定义如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private:intvalue;};则对下列语句序列正确的描述是()。A、语句p=&my,是把对象:my赋值给指针变量pB、语句MyClass*p,my;会调用两次类MyClass的构造函数C、对语句*P.SetVariable(5)的调用是正确的D、语句P->SetVariable(5)与语句my.SetVariable(5)等价标准答案:D知识点解析:选项A,语句p=&my;是把对象my的地址值赋值给指针变量P;选项B,语句MyClass*p,my;由于p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数:对成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名。成语函数名(形参表),故选项C错误,选项D正确。24、下列虚基类的声明中正确的是()。A、classvirtualB:publicAB、virtualclassB:publicAC、classB:publicAvirtualD、classB:virtualpublicA标准答案:D知识点解析:虚基类说明格式为:virtual<继承方式><基类名>其中,virtual是虚基类的关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。即:class<派生类名>Virtual<继承方式><基类名>;25、下列程序的执行结果是()。#include<iostream.h>classSample{intx,y;public:Sample(){x=y=0;)Sample(inta,intb){x=a;y=b;}~Sample(){if=(x==y)cout<<“x=y”<<endl;elsecout<<“x!=y”<<endl;}voiddisp(){coutA、x=2,y=2B、x=3,y=3C、x=2,y=3D、x=3,y=2标准答案:C知识点解析:本题考查的是类的构造函数和析构函数。首先,Samplesl(2,3);会调用含有两个参数的构造函数Sample(inta,intb){x=a,y=b,),disp()函数输出成员变量x和y的值:x=2,y=3;然后结束时调用析构函数,因为x和y值不等,故输出x!=y。26、下面程序的运行结果为()。#include<iostream.h>voidmain(){chara=‘3’;switch(A){case’3’:cout<<“3”;case’2’:cout<<“2”;break;default:cout<<“1”;}}A、3B、321C、31D、32标准答案:D知识点解析:本题主要考查的是switch语句的使用,在第一个csse处,因为满足条件所以输出字符3,但这个分支没有break语句终止,所以会继续执行下面的分支语句,即输出字符2,这时出现break语句,结束整个语句,即输出32。27、有如下程序:#include<iostream>usingnamespacestd;ClassTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题中变量n是静态数据成员,对象对其操作的结果具有叠加作用,main函数中先定义了Test的对象*p,然后又deletep,所以对静态数据n进行了两次操作,分别是”n+=2”和”n+=3”,n的初始值是1,那么n最后的值变为0。main函数最后通过调用静态函数getNum得到n的值,并输出。28、有如下类声明:classXA{intX;public:XA(intn){x=n;}};classXB:publicXA{inty;public:XB(inta,intb);};在构造函数XB的下列定义中,正确的是()。A、XB::XB(inta,intb):x(a),y(b){}B、XB::XB(inta,intb):XA(a),y(b){}C、XB::XB(inta,intb):x(a),XB(b){}D、XB::XB(inta,intb):XA(a),XB(b){}标准答案:B知识点解析:C++中派生类构造函数的一般语法规则为:<派生类名>::(派生类名)(<参数表>):<基类1>(<参数表1>),…,<基类名n>(<参数表n>),(子对象1)(<于对象参数表1>,…<子对象m>(<于对象参数表m>){<派生类新增成的初始化语句>;},终上所述。29、下列程序的输出结果是()。#include<iostream>usingnamespacestd;intmain()于chara[]=”Hello,Test”;Char*p=a;while(*p){if(*p)=’a’&&*p(=’z’)cout<<char(*p+’A’-’a’);elsecout<<*p;p++;}return0;}A、hello,testB、Hello,TestC、HELLO,TESTD、hELLO,tEST标准答案:C知识点解析:用一个指针变量p指向字符数组a,在while循环中,当不指向数组尾时,将小写字母转换为大写字母!然后将其输出。30、有如下程序:#include<iostream>usingnamespacestd;ClassTestClass{private:intx,y;public:TestClass(inti,intj){x=i;y=j;}voidprint(){cout<<“print1”<<endl;}voidprint()const{cout<<”prinA、printlB、print2C、printlprint2D、程序编译时出错。标准答案:B知识点解析:本题定义TestClass型的常对象a,然后调用对象a中的成员函数print()。因为在C++中,如果一个对象被声明为常对象,则不能调用镇对象中的非const型的成员函数。所以,这里调用的是对象中的const型成员函数“voidprint()const”,输出为print2。31、下面程序的运行结果是()。#include<iostream.h>classbase{protected:inta;public:base(){cout<<“0”;}};Classbase1:virtua1base{public:base1(){cout<<“1”;}};classbase2:virtualbase{public:base2(){cout<<“2”;}A、0123B、3120C、0312D、3012标准答案:A知识点解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。32、下列程序的运行结果为()。#include<iostream.h>template<classTT>classFF{TTa1,a2,a3;public:FF(TTb1,TTb2,TTb3){a1=b1;a2=b2;a3=b3;}TTSum(){returna1+a2+a3;}};voidmain(){FF<int>x(int(1.1),2,3),y(int(4.2),5,6);cout<<x.Sum(A、6.115.2B、615C、615.2D、6.115标准答案:B知识点解析:本题考查模板函数的应用,表达式int(1.1)和int(4.2)是将1.1和4.2强制转换为整型。33、下面程序的运行结果为()。#include<iostream.h>voidswap(int&a,intB){inttemp;temp=a++;a=b;b=temp;}voidmain(){inta=2,b=3;swap(a,b);cout<<a<<“,”<<b<<end1;}A、2,3B、3,2C、2,2D、3,3标准答案:D知识点解析:本题考查的是引用调用,因为函数swap引用调用参数a,所以在swap函数中a的变化会改变主函数中a的值,即a自加1,但b的值并未改变。34、以下程序的输出结果是()。min(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}cout<<a<<endl;}A、21B、32C、33D、11标准答案:B知识点解析:本题是两个循环语句和一个判断语句的嵌套。For循环的作用是在i等于10的时候跳出循环本题的答粟为B。35、有如下类声明:classXA{intX;public:XA(intn){x=n;}};classXB:publicXA{inty;public:XB(inta,intb););在构造函数XB的下列定义中,正确的是()。A、XB::XB(inta,intb):x(a),y(b){}B、XB::XB(inta,intb):XA(a),y(b){}C、XB::XB(inta,intb):x(a),XB(b){}D、XB::XB(inta,intb):XA(a),XB(b){}标准答案:B知识点解析:本题考查提派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式:派生类名(构造函数形参表)基类构造函数(形参表)。三、公共基础填空题(本题共5题,每题1.0分,共5分。)36、软件工程研究的内容主要包括:______技术和软件工程管理。标准答案:队列。知识点解析:队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫做“队尾”,删除元素的一端叫做“队头”,先插入的元素先被删除,是按先进先出的原则组织数据的。37、在算法的4个特性中,算法必须能在执行有限个步骤之后终止指的算法的特性。标准答案:类。知识点解析:在面向对象方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。38、注释一般分为序言性注释和______注释。标准答案:空间。知识点解析:衡量一个算法的复杂度有两个指标:时间复杂度和空间复杂度。前者用来衡量执行算法时所需要的计算工作量,而后者用来衡量执行算法所需要的存储空间。39、在链表的运算过程中,能够使空表与非空表的运算统一的结构是______。标准答案:相关文档。知识点解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。40、数据库系统的主要特点为数据集成性、数据的高______和低冗余性、数据独立性和数据统一管理和控制。标准答案:数据库管理系统。知识点解析:数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。四、填空题(本题共10题,每题1.0分,共10分。)41、将一个函数声明为一个类的友元函数必须使用关键字______。标准答案:friend。知识点解析:定义友元函数的方式是在类定义中用关键宇friend说明该函数,其格式为:42、若有函数fun(x,y),并且已经使函数指针变量p指向函数fun,则使用p调用函数fun的方法是______。标准答案:(*p)(x,y)。知识点解析:一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向读函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。函数指针变量定义的一般形式为:类型说明符(*指针变量名)();其中“类型说明符”表示被指函数的返回值的类型。“(*指针变量名)”表示“*”后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。43、C++语句constchar*constp=”hello”;,所定义的指针p和它所指的内容都不能被______。标准答案:改变。知识点解析:本题考查的是定义常量的关键字const,由const定义的变量的值不可以再改变,所以定义时必须进行初始化。44、类中包含了一个静态成员函数,则main函数中和P.f1(P);语句具有同样功能的语句为______。#include<iostream.h>classM{public:M(intA){A=a;B+=a;}staticvoidf1(Mm);private:intA;staticintB;};voidM::f1(Mm){cout<<“A=“<<m.A((end1;cout<<“B=”<<m.B<<en标准答案:M::f1(P);。知识点解析:由于f1是类M的静态成员函数,即说明类M的任何对象都共享一份f1,因此,不仅可以从对象那里访问f1,还可以用域操作符::通过类名来访问。45、下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素栈初始为空,top值为0,栈项元素在stack[top-]中,在下面横线处填上适当语句,完成栈类模板的定义。template<classT>classTstack{enum{size=1000};Tstack[size];inttop;public:Tstack():top(0){}voidpush(constT&i){if(top<size)标准答案:stack[--top]或stack[top-=1)或stack[top=top-1]。知识点解析:本题考查的是堆栈数据结构。分析题目,首先利用函数voidpush(constT&i)将i压入栈,然后Tpop()将元素弹出,但由于在压入栈时,top值已经增加“要弹出元素,须使top先减1,才能把栈顶元素弹出。故正确答案为stack[--top]。46、对于下面定义的类MyClass,请在函数f()中添加对象成员把n的值修改为50。ClassMyClass{Public:MyClass(intx){n=x;)VoidSetNum(intnl){n=nl;}private:intn;};intf(){MyClass*ptr=newMyClass(45);}标准答案:Ptr->SetNum(50);。知识点解析:本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号“->”。47、在下列的程序的横线处填上适当的语句,使该程序的输出为12。#include<iostream.h>usingnamespacestd;classBase{public:inta,b;Base(inti){a=i;}};classDerived:publicBase{inta;public:Derived(intx):Base(x),b(x+1){};voidshow(){标准答案:eout<<Base::a。知识点解析:本题考查的是基类和派生类的构造函数。派生类构造函数的执行顺序:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。本题要求结果是输出12,分析题目,首先调用基类的构造函数,然后是调用子对象的构造函数,横线处要求输出基类成员a的值,填入tout<<Base::a即可。48、在MyClass类的定义中,对赋值运算符=进行重载。请将横线处缺失的部分补充完整。______MyClass::operator=(constMyClass&rhs){if(this==&rhs)return*this;value=rhs.value;return*this;}标准答案:MyClass&。知识点解析:本题考查“=”运算符的重载。运算符“=”的重载需要注意:返回值应声明为引用,函数体中总是用语句return*this;返回;如果参数被声明为指向同类对象的引用妨指针,应判别所指向的对象是否与被赋值对象为同一对象,如果是则不做任何处理;如果被赋值对象占用了动态空间,应选释放这些资源,以便接收新的资源,如果参数被声明为指针成引用,通常应加上const修饰;一个类如果需要重载运算符=,通常也就需要定义自身特有的复制构造函数,反之亦然。49、下列程序的输出结果是______。#include<iostream)usingnamespaceStd;ClassTest{public:Test(){cnt++;}~Test(){cnt--;}staticintCount(){returncnt;}private:staticintcnt;};intTest::cnt=0;intmain(){cout<<Test::Count(标准答案:042。知识点解析:C++中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的拷贝,如果在类中将数据成员用static说明为静态的,N0这个类成员只有一个拷贝并被这个类的所有对象所共享。类Test的静态成员cnt,初始值为0,所以执行语句”cout<<Test::Count()<<“;”后输出0。然后程序创建了两个对象t1和t2;以及两个对象指针并调用new来初始化指针,所以cnt的值变成了4。然后程序将对象指针pT4、pT3delete了,此时将分别调用析构函数将cnt的减50、有以下程序:#include<iostream>usingnamespacestd;classBase{public:Base(){K=0;}intx;};classDerivedl:virtualpublicBase{public:Derivedl(){x=10;}};classDerived2:virtua1publicBase标准答案:20。知识点解析:本题中,虽然Derived1和Derived2由于引入了虚基类,使得它们分别对应基类的不同副本。这时数据成员x只存在一份拷贝,不论在类Derived1中修改,还是在类Derived2中修改,都是直接对这惟一拷贝进行操作。本题程序执行语句“Derivedobi;”时,就会先调用虚基类Base的构造函数,使得x=0,然后执行类Derived1的构造函数使得x=10,再执行类Derived2的构造函数,使得x=20。最后输出x的值为20。国家二级(C++)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、下列叙述中正确的是()。A、一个算法的空间复杂度大,则其时间复杂度必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、上述三种说法都不对标准答案:D知识点解析:算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。2、下列叙述中正确的是()。A、一个逻辑数据结构只能有一种存储结构B、逻辑结构属于线性结构,存储结构属于非线性结构C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率标准答案:D知识点解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。3、对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。A、125B、n/2C、nD、n+1标准答案:C知识点解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。4、最简单的交换排序方法是()。A、快速排序B、选择排序C、堆排序D、冒泡排序标准答案:D知识点解析:所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序快速排序。冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。5、设计程序时应采纳的原则之一是()。A、程序的结构应有助于读者的理解B、限制GOTO语句的使用C、减少或取消注释行D、程序越短越好标准答案:A知识点解析:程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。程序滥用GOTO语句将使程序流程无规律,可读性差;添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依实际的需要而定,并不是越短越好。6、下列关于结构化程序设计原则和方法的描述中,错误的是()。A、选用的结构只准许有一个入口和一个出口B、复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C、不允许使用GOTO语句D、语言中所没有的控制结构,应该采用前后一致的方法来模拟标准答案:C知识点解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。选项A)、B)、D)为结构化程序设计的原则。7、下列特征中不是面向对象方法的主要特征的是()。A、多态性B、继承C、封装性D、模块化标准答案:D知识点解析:面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。8、在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。A、调用语句B、命令C、口令D、消息标准答案:D知识点解析:在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。9、下列描述中错误的是()。A、继承分为多重继承和单继承B、对象间通信靠传递消息实现C、在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D、类是具有共同属性、共同方法的对象的集合标准答案:C知识点解析:对象的封装性是指从外面看只能看到对象的外部特性:而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。10、下列叙述中正确的是()。A、软件交付使用后还需要进行维护B、软件一旦交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:软件生命周期一般可以分为软件定义、软件开发及软件运行维护3个阶段。软件交付并投入运行后,需要不断地进行维护,并根据新提出的需求进行必要而且可能的扩展和删改。二、选择题(本题共25题,每题1.0分,共25分。)11、下列关于C++函数的说明中,正确的是()。A、内联函数就是定义在另一个函数体内部的函数B、函数体的最后一条语句必须是return语句C、标准C++要求在调用一个函数之前,必须先声明其原型D、编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式标准答案:C知识点解析:选项A)中,内联函数不是定义在另一个函数体内部的函数,而是将incline放在函数定义中函数类型之前;函数题的最后一条语句可以是任意的语句,所以选项B)错误;编译器不会根据函数返回值的类型宋区分重载形式,所以选项D)错误。标准C++要求在调用一个函数之前,必须先声明其原型,所以选项C)正确。12、假定MyClass为一个类,则执行MyClassab(2),*p;语句时,自动调用该类构造函数()次。A、2B、3C、4D、5标准答案:A知识点解析:C++在创建一个对象时,会调用类的构造函数。语句MyClassab(2),*p;创建了两个对象a、b和指针p,在创建对象a和b后会调用构造函数,而创建指针p时,由于p本身不是对象,所以不调用类的构造函数。13、有下列程序:#include<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n-=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTestA、n=0B、n=lC、n=2D、n=3标准答案:A知识点解析:语句Test*p=newTest;会调用类的构造函数Test(){n+=2;},使n的值由原来的1变为3,然后deletep调用类的析构函数~Test(){n-=3;},因为n是static型变量,所以会在3的基础上减3使得输出结果为0。14、关于运算符重载的表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:此题考查的是运算符的有关概念。运算符重载是针对C++原有运算符进行的,不能通过重载创造新的运算符:除了“.”、“.*”、“->*”、“∷”、“?:”这5个运算符之外,其他运算符都可以重载;在类型转换符函数的定义中不需要声明返回类型,所以选项C)正确;运算符函数的返回值类型可以声明为基本数据类型。15、假定MyCIass为一个类,那么下列的函数说明中,()为该类的析构函数。A、void~MyClass();B、~MyClass(intn);C、MyClass();D、~MyClass();标准答案:D知识点解析:C抖语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是-MyClass()。16、关于拷贝初始化构造函数,正确的是()。A、在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数B、必须为每个类定义拷贝初始化构造函数C、如果要使用拷贝初始化构造函数,则必须在类中先定义D、当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造函数标准答案:A知识点解析:拷贝构造函数是一个特殊的构造函数,它用一个已知的对象初始化一个正在创建的同类对象,它不能指定函数返回类型:只有一个参数,是同类的某个对象名的引用。每一个类中都必须有一个拷贝构造函数,如果类中未声明,编译器会自动生成一个公有的拷贝构造函数。17、下列关于重载函数的描述中,()是错误的。A、重载函数中不允许使用默认参数B、重载函数中编译是根据参数表进行选择C、不要使用重载函数来描述毫不相干的函数D、构造函数重载将会给初始化带来多种方式标准答案:A知识点解析:在选项A)中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫不相干的函数;重载函数中编译是根据参数表进行选择,包括参数的个数和类型。18、有下列程序:#include<iostream>usingnamespacestd;classComplex{doublere,im;public:Complex(doubler,doublei):re(r),im(i){}doublereal()const{retumre;}doubleimage()const{returnim;}Complex&operator+=(ComplexA){rA、(1,-2)B、(2,3)C、(3,5)D、(3,1)标准答案:C知识点解析:此题考查的是“+”运算符的重载。重载后的“+”运算符的功能是对参数的两部分分别进行加法运算,然后返回复数值。所以x+=y使得对象x(1,2)与y(2,3)的re和im分别相加,最后输出结果(3,5)。19、下列有关重载函数的描述中,正确的是()。A、重载函数必须具有不同的返回值类型B、重载函数形参个数必须不同C、重载函数必须具有不同的形参列表D、重载函数名可以不同标准答案:C知识点解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。20、是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。A、模板B、类C、对象D、函数标准答案:A知识点解析:此题考查的是模板的特点。模板是以一种完全通用的方法来设计函数或类而不必预先说明将被使用的每个对象的类型。21、下列关于getline()函数的描述中,错误的是()。A、该函数可以用宋从键盘上读取字符串B、该函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通风与空调工程监理质量评估报告
- 中国水平多关节机器人行业投资分析及发展战略咨询报告
- 2025年玻璃贴项目投资可行性研究分析报告
- 中国电容压力变速器项目投资可行性研究报告
- 中国体育保险行业市场评估分析及发展前景调研战略研究报告
- 2024年绵阳市北川羌族自治县疾病预防控制中心招聘考试真题
- 养猪股制合同范本
- 2024年济南市教育局所属学校引进毕业生考试真题
- 2025年度股权融资财务顾问股权融资方案执行协议
- 2024年北京大学物理学院招聘劳动笔试真题
- 中国着名的塔课件
- Q∕GDW 11612.2-2018 低压电力线高速载波通信互联互通技术规范 第2部分:技术要求
- 公司办公室5S管理规定(实用含图片)
- (完整版)餐饮员工入职登记表
- 智能化工程施工工艺图片讲解
- 人教版小学五年级数学下册教材解读
- 2022年最新苏教版五年级下册科学全册教案
- 咳嗽与咳痰课件
- 小学四年级数学奥数应用题100题
- 综合布线验收报告材料
- 《初三心理健康教育》ppt课件
评论
0/150
提交评论