版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(选择题)模拟试卷1(共9套)(共185题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共18题,每题1.0分,共18分。)1、下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。A、内模式B、外模式C、概念模式D、逻辑模式标准答案:A知识点解析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。2、对如下二叉树进行后序遍历的结果为()。A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA标准答案:D知识点解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回:否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项D)为正确答案。3、软件需求规格说明书的作用不包括()。A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合同;②开发人员进行设计和编程的依据:③软件工程项目验收的依据。4、数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的()。A、需求分析阶段B、逻辑设计阶段C、概念设计阶段D、物理设计阶段标准答案:C知识点解析:E.R模型(实体联系模型)是将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们间的两种基本联接关系,并且可用一种图非常直观地表示出来。它属于数据库设计的概念设计阶段。5、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、差C、交D、并标准答案:B知识点解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。6、下列描述中,不属于面向对象思想主要特征的是()。A、封装性B、跨平台性C、继承性D、多态性标准答案:B知识点解析:封装性、继承性和多态性是面向对象程序设计的三个基本特征。跨平台性不是面向对象程序设计的特征。7、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:继承分为单继承和多继承,一个类只有一个直接基类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。派生类的数据成员由所有基类的的数据成员与派生类新增的数据成员共同组成。8、有以下程序:#include<iostream>usingnamespacestd;classTestClass{public:TestClass(intr1,intr2){R1=r1;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidTestClass::print(){cout<<R1<<","<<R2<<endl;}voidTestClass::print()const{cout<<R1<<"."<<R2<<endl;}intmain(){TestClassa(5,4);constTestClassb(20,52);b.print();return0;}执行后的输出结果是()。A、5,4B、20,52C、0,0D、4,5标准答案:B知识点解析:常对象只能调用其中的const成员函数,即“constTestClassb(20,52);”只能调用“voidprint()const;”。常对象保证所有数据成员的数值不被修改,所以这里是20,52。9、如果表达式a>=b中的“>:”是作为非成员函数重载的运算符,则可以等效地表示为()。A、a.operator>=(b)B、b.operatotr>=(a)C、operator>=(a,b)D、operator>=(b,a)标准答案:C知识点解析:运算符函数作为非成员函数时,没有隐含的this指针,因此所有的操作数必须出现存参数表中,对于二元运算符,参数表中有两个参数,分别代表第一操作数和第二操作数,且顺序不能改变。10、有如下类定义:classPoint{private;staticinthow_many;};__how_many=0;要初始化Point类的静态成员how_many,下划线处应填入的内容是()。A、ingB、staticintC、intPoint::D、staticintPoint::标准答案:C知识点解析:此题考查的是静态数据成员的初始化。静态数据成员应在类体外进行初始化,且初始化的一般格式为:数据类型类名::静态数据成员名=初始值。11、有如下类定义:classTest{public:Test(){a=0;c=0;}∥①intf(inta)bonst{this->a=a;}//②staticintg(){returna;}//③voidh(intb){Test::b=b;};//④private:inta;staticintb:constintc;};intTest::b=0;在标注号码的行中,能被正确编译的是()。A、①B、②C、③D、④标准答案:D知识点解析:此题考查的是类的定义。一个类的长数据成员的初始化只能在成员初始化列表中进行,故选项A错误;常成员函数不能更新对象的数据成员,故选项B错误;静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员,故选项C错误。12、以下关键字不能用来声明类的访问权限的是()。A、publicB、staticC、protectedD、private标准答案:B知识点解析:此题考查的是类的访问权限。在C++语言中,类的访问权限有公有、保护和私有三种。故本题选B。13、有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obi是类D的对象,则下列语句中不违反访问控制权限的是()。A、obj.fun1();B、obj.fun2();C、obj.fun3();D、obj.fun4();标准答案:A知识点解析:派生类D公有继承父类B,所以obj可以访问基类B的公有,不能访问其它成员。14、有如下程序:#include<iostream>usingnamespacestd;classC1{public:~C1(){cout<<1;}};classC2:publicC1{public:~C2(){cout<<2;}};intmain(){C2cb2;C1*cb1;return0;}运行时的输出结果是()。A、121B、21C、211D、12标准答案:B知识点解析:在主函数中定义C2类的对象,当程序结束时,首先调用C2类的析构函数~C2,输出2,再调用Cl类的析构函数~C1,输出1。所以程序运行的结果就是21。15、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun0{tout<<’B’;}};classDerived:publicBase{public:voidfun(){____cout<<’D’;}};intmain(){Derivedd;d.fun();return0;}若程序的输出结果是BD,则划线处缺失的部分是()。A、fun();B、Base.fun();C、Base::fun();D、Base->fun();标准答案:C知识点解析:派生类Derived的对象d调用其成员函数fun(),要输出结果为BD,所以在其成员函数fun()中要调用基类Base的成员函数fun()。16、有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是类D的对象,则下列语句中不违反访问控制权限的是()。A、pbj.fun1();B、obj.fun2();C、obj.fun3();D、obj.fun4();标准答案:A知识点解析:派生类D公有继承父类B,所以obj可以访问基类B的公有,不能访问其它成员。17、有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){cout<<setfill(’#’)<<setw(4)<<"OK"<<123<<endl;return0;}运行这个程序的输出结果是()。A、##OKl23B、##OK123C、OK##123D、OK##123#标准答案:A知识点解析:setfill是设置填充字符setw设置输出的宽度,它们的作用表现在紧接着输出的字符串上。这个宽度是填充后的宽度。所以cout<<setfill(’#’)<<setw(4)<<"OK"<<123中,setfill和setw只作用在"OK",表示在"OK"前面填充2个##。18、有如下程序:#include<iostrearm>#include<iomanip>usingnamespacestd;intmain(){cout<<setfill(’#’)<<setw(4)<<’’OK’’<<123<<endl;return0;}运行这个程序的输出结果是()。A、##OK123B、##OK#123C、K#123D、OK##123#标准答案:A知识点解析:setfill是设置填充字符,setw设置输出的宽度,它们的作用表现在紧接着输出的字符串上。这个宽度是填充后的宽度。所以cout<<setfill(’#’)<<setw(4)<<’’OK’’<<123中,setfill和s6tw只作用在’’OK’’,表示在’’OK’’前面填充2个##。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共20题,每题1.0分,共20分。)1、if语句的语法格式可描述为:格式1:if(<条件>)<语句>或格式2:if(<条件>)<语句1>else<语句2>关于上面的语法格式,下列表述中错误的是()。A、<条件>部分可以是一个if语句,例如if(if(a==0)…)…B、<语句>部分可以是一个if语句,例如if(…)if(…)…C、如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变D、<语句>部分可以是一个循环语句,例如if(…)while(…)…标准答案:A知识点解析:本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;c选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。2、待排序的关键码序列为(15,20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。A、2B、3C、4D、5标准答案:A知识点解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一一个位置,元素15则放在第二个位置。3、下列描述中正确的是()。A、软件交付使用后还需要再进行维护B、软件工具交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。已交付的软件投入运行后,应在运行使用中不断地维护,根据新提出的需要进行必要而且可能的扩充和删改。4、下列关于this指针的叙述中,正确的是()。A、this指针是一个隐含指针,它隐含于类的成员函数中B、只有在使用this时,系统才会将对象的地址赋值给thisC、类的友元函数也有this指针D、this指针表示了成员函数当前操作的数据所属的对象标准答案:D知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。5、在黑盒测试方法中,设计测试用例的主要根据是()。A、程序内部逻辑B、程序外部功能C、程序数据结构D、程序流程图标准答案:B知识点解析:黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒子,设计测试用例来验证程序外部功能的正确性。6、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式包括概念模式、外模式和内模式(物理模式)。7、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理技术的发展经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗余度大;数据库系统管理阶段共享性大,冗余度小。8、下列关于派生类的叙述中,错误的是()。A、派生类至少要有一个基类B、派生类中包括了从基类继承的成员C、一个派生类可以作为另一个派生类的基类D、基类成员被派生类继承以后访问权限保持不变标准答案:D知识点解析:派生类对象对基类成员的访问权限:①对于公有继承,只有基类的公有成员可以被派生类对象访问,其他(保护和私有)成员不能被访问。②对于私有继承和保护继承,基类中所有成员都不能被派生类对象访问。派生类对基类成员的访问权限:①对于公有继承,基类中公有成员和保护成员可以访问,而基类中私有成员不能被访问。②对于私有继承和保护继承,也是基类中的公有成员和保护成员可以被派生类访问,而基类中的私有成员不能被访问。9、有如下类声明:classMyBASE{intk;public:voidset(intn){k=n;}intget()const{returnk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE∷set(m);j=n;}intget()const{returnMyBASE∷get()+j;}};则类MyDERIVED中保护的数据成员和成员函数的个数是()。A、4B、3C、2D、1标准答案:B知识点解析:此题考查的是派生与继承中的访问权限。protected派生:private->不可见;protected->private;public->protected。10、必须用一对大括号括起来的程序段是()。A、switch语句中的case标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体标准答案:D知识点解析:此题考查的是语句块和函数。if语句的分支和循环语句的循环体可以是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来;switch语句中的case标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大括号括起来;函数的函数体必须用一对大括号括起来。11、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};则下列说法中错误的是()。A、枚举常量YELLOW的值为1B、枚举常量RED的值为6C、枚举常量BLACK的值为10D、枚举常量WHITE的值为1标准答案:D知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum类型名{枚举值表)。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右分别与整数0、l、2、3…n—1对应:若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+l、m+2…对应,直到下一个赋了值的枚举值或结束。12、负责数据库中查询操作的数据库语言是A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:负责数据库中查询操作的数据库语言是数据操纵语言。13、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){intf,f1=0,f2=1;for(inti.3;i<=6;i++){f=f1+f2:fl=f2;f2=f;}cout<<f<<endl;return0:}运行时的输出结果是()。A、2B、3C、5D、8标准答案:C知识点解析:在主函数中for循环语句执行4次,第一次循环结束时,变量f的值等于1,f1的值等于1,f2的值等于1;第二次循环结束时,变量f的值等于2,f1的值等于1,f2的值等于2;第三次循环结束时,变量f的值等于3,f1的值等于2,f2的值等于3:第四次循环结束时,变量f的值等于5,f1的值等于3,f2的值等于5;结束循环。14、已知函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是()。A、voidprint()const;B、constvoidprint();C、voidconstprint();D、voidprint(const);标准答案:A知识点解析:eonst成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。15、有如下程序:usingstd::cout;classPoint{frienddoubledistance(constPoint&p);//p距原点的距离Point(intxx=0,intyy=0):x(xx),y(yy){}//①private:intx,y;};doubledistance(constPoint&p){//②returnsqrt(p.x*P.x+p.y*p.y);}intmain(){Pointp1(3,4);cout<<distance(p1);//③return0;}下列叙述中正确的是()。A、程序编译正确B、程序编译时语句①出错C、桓序编译时语句②出错D、程序编译时语句③出错标准答案:A知识点解析:这段程序是正确的,计算p距离原点的距离。语句①是类Point的构造函数,在构造函数中给变量xx和yy赋初值0。语句②是计算点p距原点的距离的函数distance。语句⑨是计算点p1距离原点的距离并输出。16、关于函数重载,下列叙述中错误的是()。A、重载函数的函数名必须相同B、重载函数必须在参数个数或类型上有所不同C、重载函数的返回值类型必须相同D、重载函数的函数体可以有所不同标准答案:C知识点解析:此题考查的是函数重载。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。17、有如下程序:#include<iostream>usingnamespacestd;classBASE{public:~BASE(){cout<<’’BASE’’;}};classDERiVED:publicBASE{public:~DERIVED(){tout<<’’DERiVED’’;}};intmain(){DERIVEDx;return0;}执行后的输出结果是()。A、BASEB、DERIVEDC、BASEDERlJVEDD、DERIVEDBASE标准答案:D知识点解析:此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。18、有如下程序:#include<iostream>usingnamespacestd;classBASE{public:~BASE(){cout<<’’BASE’’;}};classDERiVED:publicBASE{public:~DERIVED(){tout<<’’DERiVED’’;}};intmain(){DERIVEDx;return0;}执行后的输出结果是()。A、BASEB、DERIVEDC、BASEDERlJVEDD、DERIVEDBASE标准答案:D知识点解析:此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。19、有如下程序;#include<iostream>usingnamespacestd;classBase{public:voidoutput(){cout<<1;}virtualvoidPrint(){cout<<’B’;}};classDerived:publicBase{public:voidoutput(){cout<<2;}voidPrint(){cout<<’D’;}};intmain(){Base*ptr=newDerived;ptr->output();ptr->Print();deleteptr;return0;}程序的输出结果是()。A、1BB、1DC、2BD、2D标准答案:B知识点解析:此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数:在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。本题中,从基类的定义可以看出:output()函数是普通成员函数,而Print()函数是虚函数。所以,通过ptr指针调用的output()是基类中的output(),而通过它调用的Print()则是派生类中的Print()。20、将运算符“+”重载为非成员函数,下列原型声明中,错误的是()。A、MycloCkoperator+(MyClock,long);B、MycloCkoperator+(MyClock,MyClock);C、MycloCkoperator+(long,long);D、MycloCkoperator+(long,MyClock);标准答案:C知识点解析:运算符重载不能有二义性,故选项C)不能区分运算符的准确含义。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共18题,每题1.0分,共18分。)1、一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、1,2,3,A,B,CB、C,B,A,1,2,3C、C,B,A,3,2,1D、1,2,3,C,B,A标准答案:C知识点解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是CBA321。2、下列叙述中正确的是()。A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:本题主要考查了栈、队列、循环队列的概念,栈是先进后出的线性表,队列是先进先出的线性表。根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。3、若字符指针P所指向的字符串为”abcdefg”,在执行语句()。Char*ap=newchar[strlen(p)+1];之后,ap指向的字符数组的元素个数为A、9B、8C、7D、6标准答案:B知识点解析:字符指针p所指向的字符半为“abcdefg”,所以函数strlen(p)的值等于7,再加l,等于8。4、结构化程序所要求的基本结构不包括()。A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。5、下列关于this指针的叙述中,正确的是()。A、this指针是一个隐含指针,它隐含于类的成员函数中B、只有在使用this时,系统才会将对象的地址赋值给thisC、类的友元函数也有this指针D、this指针表示了成员函数当前操作的数据所属的对象标准答案:D知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中;this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。6、在黑盒测试方法中,设计测试用例的主要根据是()。A、程序内部逻辑B、程序外部功能C、程序数据结构D、程序流程图标准答案:B知识点解析:黑盒测试法指的是根据程序的外部功能,把程序本身看成一个黑盒子,设计测试用例来验证程序外部功能的正确性。7、在学生管理的关系数据库中,存取一个学生信息的数据单位是()。A、文件B、数据库C、字段D、记录标准答案:D知识点解析:本题考查关系数据库中,数据单位的相关概念。文件是指存储在外部介质上的数据的集合。数据库是存储在计算机存储设备上,结构化的相关数据集合。它不仅包括描述事物的数据本身,而且还包括相关事物之间的联系。在数据库中,表的“行”称为“记录”,“列”称为“字段”。由此可得,题中存取一个学生信息的数据单位为记录。8、若有定义“intx=4,y=5;”,则表达式“y>x++?x--:y++”的值为()。A、3B、4C、5D、6标准答案:C知识点解析:在表达式“y>x++?x--:y++”中,由于自加(++)运行符的优前级高于比较运算符(>),所以首先进行自加运算,即变量x的值前自加1,等于5。此时表达式y>x不成立,所以整个表达式的值等于y++的值,由于y++是后自加运算,所以其值等于5。9、有如下程序:intx=3;do{x一=2;cout<<x,}while(!(一x));执行这个程序的输出结果是()。A、1B、30C、1一2D、死循环标准答案:C知识点解析:此题考查的是do一while循环语句。do一while循环首先执行do语句中的循环体,再判断是否需要继续执行循环。题目中do语句“x一=2”,while语句中“一一x”即x为0,取反为非0,循环继续执行;执行“x一=2”和“一一x”取反后,循环结束程序退出。10、有如下程序:#inclu&<iostream>usingnamespacestd;intmain(){inta[6]={23,15,64,33,40,58};ints1,s2;s1=s2=a[0];for(int*p=al+1;p<a+6;p++){if(s1>*p)s1=*p;if(s2<*p)s2=*p;}cout<<s1+s2<<end1;return0;}运行时的输出结果是()。A、23B、58C、64D、79标准答案:D知识点解析:变量s1和s2的初值都等于23,那么在执行第一次for循环时,*p的值等于15,它小于23,所以把15赋给变量s1;执行第二次for循环时,*p的值等于64,它大于23,所以把64赋给变量s2;而数组a中a[2]后面的元素的值都大于15,小于64,因而变量s1,s2的值不会再发生变化,最终值为15+64=79。11、有如下程序#inc1ude<iostream>#inc1ude<iomanip>usingnamespacestd;classMyclass{public:Myclass(){cout<’A’;}Myclass(charc){cout<<c,}~Myclass(){cout<’B’;}};intmain(){Myclassp1,*p2;p2=newMyclass(’X’);deletep2;return0;}执行这个程序屏幕上将显示输出()。A、ABXB、ABXBC、AXBD、AXBB标准答案:D知识点解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题中,主程序在创建MayClass类的对象pl时,调用MayClass类的默认构造函数,输出字母A;然后在创建*p2对象时,调用带字母参数的构造函数,输出字母X;语句deletep2;调用析构函数,输出字母B;在主函数退出时,调用析构函数清除对象p1,输出字母B。12、在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:如果一个类中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。13、有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA::b=0;intmain(){XAd1(4),d2(5);cout<<d1.getA()+d2.getA()+XA::b+d1.b<<endl;returnO;}运行这个程序的输出结果是()。A、9B、11C、13D、15标准答案:C知识点解析:在类XA的构造函数中,定义了用成员变量a的值初始化变量髓,同时静态成员变量b值加1。所以当在主main函数中定义类XA的对象d1(4)后,变量b的等于1,定义对象d2(5)后,变量b的值等于2,所以表达式d1.getA()+d.2.getA()+XA::b+d1.b等于4+5+1+2+1=13。14、有如下头文件:intfl();staticintf2();c1assMA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是()。A、f1B、f2C、f3D、f4标准答案:C知识点解析:此题考查的是this指针。tlus指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。题目中,只有f3()满足“类的菲静态成员函数”的要求,故应选C选项。15、在类声明中,紧跟在“public:”后声明的成员的访问权限是()。A、私有B、公有C、保护D、默认标准答案:B知识点解析:类中提供了3种访问控制的权限:公有,私有和保护。其中公有类型定义了类的外部接口,任何一个外部的访问都必须通过外部接口进行。私有类型的成员只允许本类的成员函数访问,来自类外部的任何访问都是非法的,保护类型介于公有类型和私有类型之间,在继承和派生时可以体现出其特点。16、有如下类定义:classXX{intxdata;public:XX(intn=0):xdata(n){}};classYY:publicXX{intydata;public:YY(intm=0,intn=0):XX(m),ydata(n){}};YY类的对象包含的数据成员的个数是()。A、1B、2C、3D、4标准答案:B知识点解析:因为类XX包括…个数据成员xdata,而类YY继承自类XX,所在类YY中也包含数据成员xdata,同时类YY中也定义了其本身的数据成员ydata,因而YY类的对象包含的数据成员的个数是2。17、有如下程序:#inc1ude<iostream>usingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"~A";}};classB:publicA{A*p;public:B(){cout<<"B";p=newA();)~B(){cout<<"~B”;deletep;}};intmain().{Bobj;return0;}执行这个程序的输出结果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:此题考查的是派生类对象的构造与析构。建立派生类对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被定义时声明的顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序.>执行派生类的构造函数。所以本题在建立派生类B的对象obj是会先调用基类A的构造函数,然后调用自身的构造函数。注意:B类中定义的成员p是A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在B类构造函数中使用new操作符动态地构造了一个A类的对象,所以整个构造结果是输出:ABA。派生类对象的析构与构造严格相反,即先析构自身,然后析构自身所包含的成员对象,最后调用基类的析构函数。故本题中当main()函数返回时,析构B类的对象obj:首先调用—B(),接着再调用—A()因为在~B()函数中释放了动态创建的A类对象,故整个析构所输出的结果是~B~A~A。所以这个程序输出结果为ABA~B~A~A18、有如下类定义classAnimal{public:virtualvoidName0=0;};classKoala:publicAnimal{public:voidName(){/*函数体略*/)};关于上述类定义,下列描述中错误的是()。A、类Koala是类Animal的派生类B、类Koala中的Name函数是一个虚函数C、类Animal中的Name函数是一个纯虚函数D、语句“Animala;”能够建立类Animal的一个对象a标准答案:D知识点解析:在类Animal定义了纯虚函数Name(),所以类Animal就是一个抽象类,而抽象类是不能够建立对象的。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共23题,每题1.0分,共23分。)1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、12345ABCDEB、EDCBA54321C、ABCDEl2345D、54321EDCBA标准答案:B知识点解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。2、某系统总体结构图如下图所示:该系统总体结构图的深度是A、7B、6C、3D、2标准答案:C知识点解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为3。3、对如下二叉树进行后序遍历的结果为()。A、ABCDEFB、DBEAFCC、ABDECFD、DEBFCA标准答案:D知识点解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右予树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左予树,然后遍历右子树,最后访问根点。因此,后序遍历二叉树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回;否则,先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项D)为正确答案。4、关于关键字class和typename,下列表述中正确的是()。A、程序中的typename都可以替换为classB、程序中的class都可以替换为typellameC、在模板形参表中只能用typename来声明参数的类型D、在模板形参表中只能用class或typename来声明参数的类型标准答案:A知识点解析:程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。5、软件设计中模块划分应遵循的准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:耦合性和内聚性是模块独立性的两个定性标准,各模块的内聚性越强,则耦合性越弱。软件设计应该遵循高内聚低耦合。6、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。7、有如下程序:#includeusingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}intgetA(){returna;}};intXA∷b=0;intmain(){XAd1(4),d2(5);cout<A、9B、11C、13D、15标准答案:C知识点解析:在类XA的构造函数中,定义了用成员变量a的值初始化变量aa,同时静态成员变量b值加1。所以当在主main函数中定义类XA的对象d1(4)后,变量b的等于1,定义对象d2(5)后,变量b的值等于2,所以表达式d1.getA()+d2.getA()+XA∷b+d1.b等于4+5+1+2+1=13。8、数据库系统的核心是()。A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:B知识点解析:数据库管理系统(DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。所以,数据库管理系统是数据系统的核心。9、软件需求规格说明书的作用不包括A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合同;②开发人员进行设计和编程的依据;③软件工程项目验收的依据。10、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。11、在关系模型中,每一个二维表称为一个()。A、关系B、属性C、元组D、主码(键)标准答案:A知识点解析:每个二维表代表一个关系,由表框架及表的元组组成。12、下列描述中正确的是()。A、为了建立一个关系,首先要构造数据的逻辑关系B、表示关系的二维表中各元组的每一个分量还可以分成若干数据项C、一个关系的属性名表称为关系模式D、一个关系可以包括多个二维表标准答案:A知识点解析:二维表中元组的分量是不可分割的基本数据项,这就是元组分量的原子性,故选项B)错误;关系的框架称为关系模式;一个满足“元组个数有限性、元组的惟一性、元组的次序无关性、元组分量的原子性、属性名惟一性、属性的次序无关性、分量值域的同一性”7个性质的二维表称为关系。13、定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为()。A、私有继承B、非私有继承C、保护继承D、公有继承标准答案:A知识点解析:继承的方式包括三种:公有继承,保护继承和私有继承。如果不显示的给出继承方式,缺省的类继承方式是私有继承private。14、数据库设计过程不包括()。A、概念设计B、逻辑设计C、物理设计D、算法设计标准答案:D知识点解析:数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计。15、下列字符串中可以用作C++标识符的是()。A、2009varB、gotoC、test-2009D、_123标准答案:D知识点解析:标识符是用户为程序中各种需要命名的“元素”所起的名字。标识符的组成要符合一定的规则:①标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。②标识符不能与任意一个关键字同名。③标识符中的字母区分大小写。④标识符不宜过长。C++语言一般设定一个标识符的有效长度为32个字符。由这四条规则可知,选项D为正确答案。16、字面常量42、4.2、42L的数据类型分别是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long标准答案:C知识点解析:此题考查的知识点是字面常量。对于整型字面常量,只要没有超过C++中整数所能表示的范围,C++将自动按整数来存储此数,也可以通过在整型字面常量后添加u或l来指定无符号整数或长整数来存储:对于实型字面常量,C++将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度数存储。17、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"—A";}};classB:publicA{A*p;public:B(){cout<<"B";P=ncwA();}~B(){cout<<"~B";deletep;}};intmain(){Bobj;return0;}执行这个程序的输出结果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:此题考查的是派生类对象的构造与析构。建立派生类对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被定义时声明的顺序(自左向右)->执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序.>执行派生类的构造函数。所以本题在建立派生类B的对象0bj是会先调用基类A的构造函数,然后调用自身的构造函数。注意:B类中定义的成员p是A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在B类构造函数中使用new操作符动态地构造了一个A类的对象,所以整个构造结果是输出:ABA。派生类对象的析构与构造严格相反,即先析构自身,然后析构自身所包含的成员对象,最后调用基类的析构函数。故本题中当main()函数返回时,析构B类的对象obj:首先调用~B(),接着再调用~A()因为在~B()函数中释放了动态创建的A类对象,故整个析构所输出的结果是~B~A~A。所以这个程序输出结果为ABA~B~A~A。18、有如下函数模板定义:Template<classT>Tfunc(Tx,Ty){returnx*x+y*y;}在下列对fuac的调用中,错误的是()。A、func(3,5);B、func(3.0,5.5);C、func(3,5.5);D、func<int>(3,5.5);标准答案:C知识点解析:此题考查的是函数模板的使用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题C选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误;A、B选项正确;D选项中,函数名后的是模板实参表,编译系统会将double型的形参“5.5”自动转化成int类型。19、建立一个类对象时,系统自动调用()。A、析构函数B、构造函数C、静态函数D、友元函数标准答案:B知识点解析:建立一个类的对象时,编译程序需要为对象分配存储空间,进行必要的初始化。在C++中,这项工作是由构造函数来完成。20、有如下程序:#includeusingnamespacestd;classPair{intm,n;public:Pair(intj,intk):m(j),n(k){)intget(){returnm;}intgetoconst{returnm+n;}};intmain(){Paira(3,5);constPairb(3,5);cout<A、33B、38C、83D、88标准答案:B知识点解析:在主函数中定义了类Pair的一个实例变量a,并分别对实例变量a的数据成员m,n赋初值3,5。所以调用a.get()成员函数时,输出3。又定义类Pair的一个常实例变量b,并分别对实例变量b的数据成员m,n赋初值3,5。所以调用成员函数b.get()时,输出8。21、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assA{public:AO{cout<<A";}};c1assB{public:BO{cout<<"B";}}c1assC:publicA{Bb;public:C(){cout<<"C";}};intmain0{Cobj;retum0;}执行后的输出结果是()。A、CBAB、BACC、ACBD、ABC标准答案:D知识点解析:此题考查的是类的继承和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。22、有如下类定义classAnimal{public:virtualvoidName()=0;};classKoala:publicAnimal{public:voidName(){/*函数体略*/)};关于上述类定义,下列描述中错误的是()。A、类Koala是类Animal的派生类B、类Koala中的Name函数是一个虚函数C、类Animal中的Name函数是一个纯虚函数D、语句“Animala;”能够建立类Animal的一个对象a标准答案:D知识点解析:在类Animal定义了纯虚函数Name(),所以类Animal就是一个抽象类,而抽象类是不能够建立对象的。23、有如下程序:#include<iostream>usingnamespacestd;classA{publicvirtualvoidf(){cout<<1;}voidg(){cout<<2;}};classB:PubliCA{public:virtualvoidf(){cout<<3;}voidg(){cout<<4;}};voidshow(A&a){a.f();a.g();}intmain(){Bb:show(b);return0:}运行时的输出结果是()。A、12B、34C、14D、32标准答案:D知识点解析:在派生类classB中对基类中的虚拟成员函数virtualvoidf()和实函数voidg()进行了重新定义,在主函数中通过语句show(b);调用派生类中的虚函数virtualvoidf(){cout<<3;}输出3,调用基类的实函数voidg(){cout<<2;}输出2。所以选项D为正确答案。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共21题,每题1.0分,共21分。)1、某系统总体结构图如下图所示:该系统总体结构图的深度是()。A、7B、6C、3D、2标准答案:C知识点解析:这个系统总体结构图是一棵树结构,在树结构中,根结点在第1层,同一层上所有子结点都在下一层,由系统总体结构图可知,这棵树共3层。在树结构中,树的最大层次称为树的深度。所以这棵树的深度为3。2、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流。②反映出用户问题的结构,可以作为软件开发工作的基础和依据。③作为确认测试和验收的依据。3、有如下程序段:inti=0,j=1;int&r=i;∥①r=j;∥②int*p=&i;∥③*p=&r;∥④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:此题考查的是指针和引用。本题中,语句①是一条合法的引用声明语句,使得变量i被r引用;语句②通过引用r将变量j的值赋给变量i;语句③声明了指针变量p,并初始化指向变量i;语句④中*p代表了变量i的值,要将&r赋给*p,这会使编译器产生类型不符的错误提示。4、数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。A、DB包含DBS和DBMSB、DBMS包含DB和DBSC、DBS包含DB和DBMSD、没有任何关系标准答案:C知识点解析:数据库系统(DatabaseSystem简称DBS)由下列几个部分组成:数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。这五个部分构成了一个以数据库为核心的完整的运行实体,称为数据库系统。其中DB(DataBase)即数据库,是统一管理的相关数据的集合;DBMS(DatabaseManagementSystem)即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法。5、有如下类定义:classMyClass{Intvalue;public;MyClass(intn):value(n){}intgerValue()const{returnvalue;}};则类MyClass的构造函数的个数是()。A、1个B、2个C、3个D、4个标准答案:A知识点解析:此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造函数可以重载;在创建对象时,系统会自动调用构造函数。6、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。A、并B、交C、投影D、笛卡儿乘积标准答案:B知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S。形式定义如下:R∩S≡{t∈R∧t∈S}=R-(R-S)。所以不改变关系表中的属性个数,但能减少元组个数的是关系表之间的交操作。7、当派生类继承一个基类时,默认的继承方式为()。A、publicB、protectedC、privateD、不确定标准答案:C知识点解析:派生类继承一个基类时,默认的继承方式为private。8、若有如下类定义:classB{voidftmlO{)protected:doublevarl;public:voidfun20{});classD:publicB{protected:voidfun30{));已知obj是类D的对象,下列句中不违反类成员访问控制权限的是()。A、obj.funl();B、obj.varl;C、obj.fun2();D、obj.fun3();标准答案:C知识点解析:此题考查的是基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员:派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。根据以上分析可知,本题中只有从B类继承的fun2()为公有属性,故选C选项。9、有如下类声明:classSAMPLE{intn;public:SAMPLE(inti=0):n(i){}voidsetValue(intn0;};下列关于getValue成员函数的实现中,正确的是()。A、①B、②C、③D、④标准答案:D知识点解析:此题考查的是类的定义。一个类的长数据成员的初始化只能在成员初始化列表中进行,故选项A错误;常成员函数不能更新对象的数据成员,故选项B错误;静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员,故选项C错误。10、有如下程序:#includeusingnamespacestd;classSample{public:Sample(){}~Sample(){cout<<ˊ*ˊ;}};intmain(){Sampletemp[2],*pTemp[2];return0;)执行这个程序输出星号(*)的个数为()。A、1B、2C、3D、4标准答案:B知识点解析:在main函数中,定义了Sampletemp[2]的一个包含两个对象的数组,还定义了一个*pTemp[2],是包含两个指向类对象的指针的数组,故定义的指针当main函数结束后是不会调用析构函数的,只有包含两个对象的数组temp[2[会调用析构函数.因此只输出两个*。11、下列语句中,正确的是()。A、char*myString="Hello-World!";B、charmyString="Hello-World!";C、charmyString[11]="Hello-World!";D、charmyString[12]="Hello-World!";标准答案:A知识点解析:对于B来说,会造成溢出,对于C和D来说同样如此,因为“Hello—world!”一个是12个字符组成,加上空字符一共13个,所以都会造成溢出,只有A是将字符串的地址赋给字符型指针。12、有如下类定义和变量定义:classA{public:A(){data=0;}~A(){}intGetData()const{returndata;}voidSetData(iran){data=n;}private:intdata;};constAa;Ab;下列函数调用中错误的是()。A、a.GetData();B、a.SetData(10);C、b.GetData();D、b.SetData(10);标准答案:B知识点解析:由题意可知a为常对象,因为常对象不能被更新,所以通过这个常对象只能调用它的常成员函数GetData(),而不能调用其他成员函数SetData(10),因而选项B为本题的正确答案。13、已知函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是()。A、voidprint()const;B、constvoidprint();C、voidconstprint();D、voidprint(const);标准答案:A知识点解析:Const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。14、在下列枚举符号中,用来表示“相对于当前位置"文件定位方式的是()。A、ios—base::curB、ios—base::begC、iosbase::outD、iosbase::end标准答案:A知识点解析:C++流的定位方式(也就是指针移动方式)有三种,被定义为ios-base::seek_dir中的一组枚举符号:iosbase::beg相当于文件首;iosbase:cur相当于当前位置(负数表示当前位置之前);iosbase::end相对于文件尾。15、有如下程序#include<iostream>iasingnamespacestd;classTest{public:Test(){}Test(constTest&t){cout<<1;}};Testfun(Test&u){Testt=u;returnt;}intmain(){Testx,y;x=fun(y);return0;}运行这个程序的输出结果是()。A、无输出B、1C、11D、111标准答案:C知识点解析:在类Test中定义拷贝构造函数Test(constTest&t),其函数体为输出1,在主函数main中,当执行语句x=fun(y),调用拷贝函数用对象y的值构造对象u,输出1,在执行函数fun()的return语句时,调用拷贝函数构造匿名对象,输出1。16、有如下程序:#inc1ude<iostream>usingnamespacestd;classBase{intx:public;Base{intn=0};x(n){cout<<n,}IntgetX()const{returnx;}};classDerivedpublicBase{inty;public;Derived(intm,intn):y(m),Base(n){cout<<m;}Derived(intm):y(m){cout<<m,}};intmain(){Deriveddl(3),d2(5,7);Return0:}运行时的输出结果是()。A、375B、357C、0375D、0357标准答案:C知识点解析:此题考查的是派生类的构造与析构。建立派生类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序一>执行自身的构造函数。此题中,执行语句Deriveddl(3)首先调用基类的构造函数,输出0;接着调用自身的构造函数输出3。执行语句Derivedd2(5,7)时,会调用基类的Base(n)函数输出7;然后执行继承类中的Derived(intm,intn)的y(m)输出5。17、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assMountain{intheight;public:Mountain(inth=0):height(h){}virtualchar*GetName()const{retum"山’;}intGetHeight()const{returnheight;)};c1assLushan:publicMountain{Public:Lushan(intd):Mountain(d){}Char*GetName()const{return"庐山’;}};intmain(){Mountain*p=newLushan(1000);cout<<p—>GetName()<<"海拔"<<p—>GetHeight()<<"米";return0;}运行这个程序的输出结果是()。A、庐山海拔1000米B、庐山海拔0米C、山海拔1000米D、山海拔0米标准答案:A知识点解析:在基类Mountain中定义了虚函数GetName0输出字符串“山”,而在派生类Lushan中对虚函数GetName()进行了重新定义,输出字符串“庐山”。在主函数中对派生类中的虚函数GetName0进行了多态调用,此时调用的是派生类中重新定义的GetName0,输出字符字符串“庐山”。18、有如下程序;#includeusingnamespacestd;classB{public:virtualvoidshow(){tout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();)voidfun2(B&ref){ref.show();}voidfun3(Bb){b.show();)intmain(){Bb,*p=newD;Dd;fun1(p);fun2(b);fun3(d);return0:}程序的输出结果是()。A、BBBB、BBDC、DBBD、DBD标准答案:C知识点解析:此题考查的是虚函数与多态性。在成员函数的声明前面加上Virual关键字,即可把函数声明为虚函数;在C++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。此题中,fun1()和fun2()的形参分别是基类的指针和引用,给fun1()传入的实参是指向派生类对象的指针p,fun1()将调用D类中的show()输出字符‘D’;给fun2()出入的实参是基类对象,fun2()调用类B中的show()输出字符‘B’;fun3()由于形参是基类对象,调用的始终都是基类的show(),输出字符‘B’。故最终输出结果是DBB。19、下列关于C++流的说明中,正确的是()。A、与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C、cin是一个预定义的输入流类D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象标准答案:A知识点解析:此题考查的是C++流的概念。从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项B错误:cin是一个预定义的输入流对象而不是流类,故选项C错误;输入输出流中没有open成员函数,故选项D错误。20、下列运算符不能重载为友元函数的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=标准答案:A知识点解析:此题考查的是运算符重载的概念。C++语言规定,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。21、有如下函数模板定义:templateT1Fun(T2n){returnn*5.0;}若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度水陆联运货物保险及运输合同
- 二零二五年度新能源储能技术聘用合同8篇
- 二零二四年度信息化设备融资租赁管理合同3篇
- 课件:正确认识高职院校内部质量保证体系诊断与改进
- 二零二五年度牧草生物质能项目合作协议4篇
- 2025版农家乐民宿租赁管理服务合同2篇
- 二零二五版年薪制劳动合同:房地产企业销售精英激励方案4篇
- 第三单元 资产阶级民主革命与中华民国的建立(解析版)- 2023-2024学年八年级历史上学期期中考点大串讲(部编版)
- 2025年度个人家政服务分期支付合同范本2篇
- 二零二五年度地铁车站安全门系统采购合同
- 2024年苏州工业园区服务外包职业学院高职单招职业适应性测试历年参考题库含答案解析
- 人教版初中语文2022-2024年三年中考真题汇编-学生版-专题08 古诗词名篇名句默写
- 2024-2025学年人教版(2024)七年级(上)数学寒假作业(十二)
- 山西粤电能源有限公司招聘笔试冲刺题2025
- ESG表现对企业财务绩效的影响研究
- 医疗行业软件系统应急预案
- 使用错误评估报告(可用性工程)模版
- 《精密板料矫平机 第2部分:技术规范》
- 黑枸杞生物原液应用及产业化项目可行性研究报告
- 2024年黑龙江省政工师理论知识考试参考题库(含答案)
- 四年级上册脱式计算300题及答案
评论
0/150
提交评论