版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(选择题)模拟试卷4(共9套)(共345题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、下列关于算法复杂度叙述正确的是A、最坏情况下的时间复杂度一定高于平均情况的时间复杂度B、时间复杂度与所用的计算工具无关C、对同一个问题,采用不同的算法,则它们的时间复杂度是相同的D、时间复杂度与采用的算法描述语言有关标准答案:C知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量,它与使用的计算机、程序设计语言以及算法实现过程中的许多细节无关,B选项正确,D选项错误。最坏情况下的时间复杂度可以与平均情况的时间复杂度相同,A选项错误。不同的算法时间复杂度一般不相同,C选项错误。2、设有栈S和队列Q,初始状态均为空。首先依次将A,B,C,D,E,F入栈,然后从栈中退出三个元素依次入队,再将X,Y,Z入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为A、DEFXYZABCB、DEFXYZABCC、FEDXYZCBAD、DEFZYXABC标准答案:B知识点解析:栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。队列是指允许在一端进行插入,而在另一端进行删除的线性表。将A,B,C,D,E,F入栈后,栈中元素为ABCDEF,退出三个元素入队,队列元素为FED,将X,Y,Z入栈后栈中元素为ABCXYZ,全部入队后,队列元素为FEDZYXCBA,故B选项正确。3、下列叙述中正确的是A、有两个指针域的链表称为二叉链表B、循环链表是循环队列的链式存储结构C、带链的栈有栈顶指针和栈底指针,因此又称为双重链表D、结点中具有多个指针域的链表称为多重链表标准答案:D知识点解析:双向链表与二叉链表均是有两个指针域的链表,A选项错误。在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由NULL改为指向表头结点,这样的链表称为循环链表。循环队列是队列的一种顺序存储结构。循环链表与循环队列是两种存储结构,B选项错误。双向链表结点有两个指针域,指向前一个结点的指针和指向后一个结点的指针,而带链的栈是单链表形式,C选项错误。故正确答案为D选项。4、某二叉树共有845个结点,其中叶子结点有45个,则度为1的结点数为A、400B、754C、756D、不确定标准答案:C知识点解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。二叉树共有845个结点,度为0的结点有45个,度为1的结点数为n1,度为2的结点数为n2,则845=45+n1+n2,且45=n2+1,则n1=756,C选项正确。5、软件需求分析阶段的主要任务是A、确定软件开发方法B、确定软件开发工具C、确定软件开发计划D、确定软件系统的功能标准答案:D知识点解析:需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系统的功能,D选项正确。A、B、C选项均为开发阶段工作。6、下面对软件测试描述错误的是A、严格执行测试计划,排除测试的随意性B、随机地选取测试数据C、随机地选取测试数据D、软件测试是保证软件质量的重要手段标准答案:B知识点解析:在测试之前制定测试计划,并严格执行,测试用例的选择不可随意,应选择有代表性的,尽可能发现迄今为止尚未发现的错误,A选项叙述正确,B选项叙述错误。测试根本目的是尽可能多地发现并排除软件中隐藏的错误,C选项叙述正确。软件测试是保证软件质量、可靠性的关键步骤,D选项叙述正确。故正确答案为B选项。7、结构化程序的三种基本控制结构是A、顺序、选择和重复(循环)B、过程、子程序和分程序C、顺序、选择和调用D、调用、返回和转移标准答案:A知识点解析:结构化程序的三种基本控制结构:顺序、选择和重复,故A选项正确。8、数据库中对概念模式内容进行说明的语言是A、数据定义语言B、数据操纵语言C、数据控制语言D、数据宿主型语言标准答案:A知识点解析:数据库管理系统为完成主要功能提供了相应的数据语言,它们是:数据定义语言,该语言负责数据的模式定义与数据的物理存取构建;数据操纵语言,该语言负责数据的操纵,包括查询与增、删、改等操作;数据控制语言,该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。故A选项正确。9、某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓库中。则实体仓库和零件间的联系是A、多对多B、一对多C、多对一D、一对一标准答案:A知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。每个仓库存放有不同的零件,相同零件可能放在不同的仓库中,故实体仓库和零件间的联系是多对多,A选项正确。10、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、交B、差C、并D、选择标准答案:A知识点解析:用于查询的3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。选择,从关系中找出满足给定条件的元组的操作称为选择,题目中无给定条件,故D选项错误。差:R-S结果是属于R但不属于S的记录组成的集合,T中元组"c32"同时属于R和S,B选项错误。并:R∪S是将S中的记录追加到R后面,T中元组少于R,故C选项错误。交:R∩S结果是既属于R又属于S的记录组成的集合,与题目中结果相符,故A选项正确。11、下列选项中,正确的C++标识符是A、a^3B、a-3C、a’3D、a_3标准答案:D知识点解析:C++的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。A、B、C错误,答案为D。12、下列选项中,正确的C++表达式是A、a1+B、b++2C、3=cD、-d4标准答案:D知识点解析:选项A中,"+"运算符作为一元运算符,应该放在操作数之前,返回操作数本身;作为二元运算符,必须作用于两个操作数;选项B中,"++"运算符是一元运算符,只能作用于一个操作数;选项C中,3是常量,不能用作赋值操作符的左值;选项D正确,"-"操作符作为一元运算符,放在操作数之前,对其操作数取负;答案为D。13、要定义整型数组x,使之包括初值为1的三个元素,下列语句正确的是A、staticintx[3]={1};B、intx[3];x[1]=x[2]=x[3]=1;C、intx[3]={1,1,1};D、intx={1,1,1};标准答案:C知识点解析:选项A中,数组x的后两个元素初值默认为0;选项B中,数组下标从0开始,x[0]未赋初值,x[3]访问越界;选项D中,x是整型变量,不是整型数组,赋值语法错误;只有C正确,定义整型数组x,并对三个元素赋初值为1;答案为C。14、常量4.2,4.2f,4L的数据类型分别是A、float、float、doubleB、double、float、longC、double、double、floatD、float、float、long标准答案:B知识点解析:常量4.2是浮点型常量,一般按双精度处理,是double型;4.2f按单精度处理,是float型;4L是long型。答案为B。15、设变量x和y为整型变量,若有函数调用为"fun(&x,&y)",则下列选项中,能够作为函数fun原型声明的是A、voidfun(int&a,int&b);B、voidfun(int&a,int*b);C、voidfun(int*a,int&b);D、voidfun(int*a,int*b)标准答案:D知识点解析:fun(&x,&y),函数调用参数列表中传递的是变量x,y的地址,所以函数原型声明的形参列表中参数应该是两个整型变量地址,A、B、C选项中都包含引用传递,不正确;答案为D。16、下列关于函数参数的叙述中,错误的是A、函数的实参与形参应该一一匹配B、定义函数时必须给出函数的实参C、函数形参可以看做函数的局部变量D、C++中可以为形参指定默认值标准答案:B知识点解析:函数定义时,形参列表若不为空,需要给出函数的形参;调用函数时,参数列表若不为空,必须给出函数的实参;选项A、C、D正确,选项B错误;答案为B。17、下列选项中,不是重载函数调用时选择依据的是A、参数个数B、参数类型C、参数名称D、函数名称标准答案:C知识点解析:重载函数调用时首先要从函数名称相同的候选函数中选择可行函数,可行函数必须满足两个条件:1、函数的形参个数与该调用的实参个数相同;2、每个实参的类型必须与对应形参的类型匹配,或者可被隐式转换为对应的形参类型。参数名称可以不相同,答案选C。18、若为类MyClass重载运算符"+",下列声明中,错误的是A、friendMyClassoperator+(double,double);B、friendMyClassoperator+(double,MyClass);C、friendMyClassoperator+(MyClass,double);D、friendMyClassoperator+(MyClass,MyClass);标准答案:A知识点解析:重载运算符必须具有一个类类型的操作数,这条规则强制重载运算符不能重新定义用于内置类型对象的运算符。选项B、C、D正确,A错误,答案为A。19、有如下程序:#includeusingnamespacestd;voidfun(int&x,inty){y=y+x;x=y/4;x++;}intmain(){intx=4,y=5;fun(x,y);cout<A、4,5B、3,5C、3,9D、2,5标准答案:B知识点解析:函数fun的形参x为引用类型,函数功能是将形参x与y之和除以4的结果赋给x,再对x自增1,通过引用类型修改实参;main函数中定义x=4,y=5,所以通过函数fun的调用,x的值被修改为:(4+5)/4+1=3,而y的值不变,所以程序输出3,5;答案为B。20、有如下程序:#includeusingnamespacestd;voidfun(int&x,int&y){y=y+x;x=y/4;x++;}intmain(){intx=4,y=5;fun(x,y);cout<A、4,5B、3,5C、3,9D、2,5标准答案:C知识点解析:函数fun两个形参x,y都是引用类型,函数功能是通过形参的引用类型修改实参值,首先修改y值为x、y之和;然后将修改后的y值除以4,结果赋给x,再将x自增1;main函数中定义x=4,y=5,通过fun函数的调用,修改y的值为4+5=9,x的值为9/4+1=3,最终输出结果为3,9,答案为C。21、有如下类定义:classMyClass{public:MyClass(doubled=0.0):val(d){}______________//运算符函数-的声明private:doubleval;};若要使语句序列MyClassy(4.6),z;z=6.7-y;能够正常运行,横线处的声明语句应为A、friendMyClassoperator-(MyClass&,MyClass&);B、friendMyClassoperator-(double,MyClass);C、friendMyClassoperator-(MyClass&,double);D、friendMyClassoperator-(double&,MyClass&);标准答案:B知识点解析:由调用函数6.7-y可知,double类型在运算符"-"的左边,应该作为运算符函数"-"的第一形参,选项A、C错误;由于运算符"-"函数并不改变操作数的状态,所以形参应该声明为const对象的引用,或者按值传递,参数按引用类型传递可能会改变操作数的状态,选项D错误;答案为B。22、有如下两个类定义:classAA{};classBB{AAv1,*v2;BBv3,*v4;};其中定义错误的成员变量是A、v1B、v2,v4C、v3D、v3,v4标准答案:C知识点解析:只有类定义或者声明在当前定义类前面出现过,数据成员才能被指定为该类类型,类AA已经完成定义,v1,v2正确;类不能具有自身类型的数据成员,只要类名出现就可以认为该类已经声明,类的数据成员就可以是指向自身类型的指针或引用,类BB在声明之后,定义之前是一个不完全类型,其数据成员只能是指向BB类型的指针或引用,v4正确,v3错误;答案为C。23、有如下类定义:classBase{public:voidfun(){cout<<"Base::fun"<A、Base.fun();B、Base->fun();C、Base::fun();D、fun();标准答案:C知识点解析:基类Base和派生类Derived中使用同一名字的成员函数fun,所以在派生类Derived的作用域中,派生类Derived中的fun函数会屏蔽基类Base中的fun函数,即Base的fun函数对Derived不可见,这是因为编译器在查找名字fun时,首先在Derived中找到,这样编译器就不再继续查找,所以若想在Derived中调用Base的fun函数,必须显式的说明fun函数属于Base,这里使用作用域运算符访问被屏蔽的fun,调用语句为:Base::fun();答案为C。24、如果派生类以protected方式继承基类,则基类中的保护成员在派生类中的访问属性是A、publicB、protectedC、privateD、protected或public标准答案:B知识点解析:protected方式继承中,基类的public和protected成员在派生类中为protected成员,答案为B。25、有如下两个类定义:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在派生类YY中的保护成员的个数是A、1B、2C、3D、4标准答案:C知识点解析:类YY以protected方式继承类XX,所以类XX中的public成员和protected成员在YY中为protected成员,所以YY中的protected成员有:x2,x3,y2,答案为C。26、有如下类声明:classWhat{intn;public:doubled;private:charc;};类What的公有数据成员和私有数据成员的数量分别是A、1和1B、1和2C、2和1D、2和2标准答案:B知识点解析:class关键字定义的类,成员默认的访问级别是私有的,所以类What中公有成员有d,私有成员有n,c;答案为B。27、除了显式定义的构造函数外,类中还有可能包含编译器自动生成的构造函数,因此一个类所拥有的构造函数的至少有A、1个B、2个C、3个D、4个标准答案:A知识点解析:一个类,如果没有显示定义的构造函数,那么编译器自动生成一个构造函数;一个类,如果显示定义了构造函数,无论个数多少,编译器也不会再生成任何构造函数,所以一个类所拥有的构造函数至少有1个,答案为A。28、有如下类声明:classHow{intk;public:How():k(99){}};则类How所拥有的构造函数的数量是A、1B、2C、3D、4标准答案:B知识点解析:首先类How定义了一个默认构造函数How(),因而编译器不会自动生成默认构造函数;其次How中需要一个复制构造函数,这由编译器自动生成,所以How有两个构造函数,答案为B。29、在下面的类声明中,错误的是A、classAA{BBb;};classBB{AAa;};B、classAA{AA*a;};classBB{BB&b;};C、classBB;classAA{BB*b;};classBB{AAa;};D、classAA;classBB{AA&a;};classAA{BBb;};标准答案:A知识点解析:在创建类的对象之前,必须完整的定义该类,在一个类的声明之后,定义之前,这个类是一个不完全类型,对于不完全类型,只能用于定义指向该类型的指针及引用,或者用于声明(不是定义)使用该类型作为形参类型或返回类型的函数;选项A中,类A中的BB还未定义(也未声明),无法创建BB类对象,错误;选项B中,声明之后定义的是指针或引用,正确;选项C中,声明BB之后定义BB类的指针,定义AA之后创建AA类的对象,正确;选项D中,声明AA之后定义AA类的引用,定义BB之后创建BB类的对象,正确;答案为A。30、有如下类声明和函数声明:classBase{intm;public:intn;protected:intp;};classDerived:publicBase{intk;};voidf(Derivedd);则允许函数f访问的参数d的数据成员的个数是A、1B、2C、3D、4标准答案:A知识点解析:C++中,以class关键字定义的类默认的访问级别为private,另外对于公有继承,基类成员保持自己的访问级别(private成员除外),即基类的public成员为派生类的public成员,基类的protected成员为派生类的protected成员;本题中,Derived类以public方式继承Base,所以Derived中public成员有:n,protected成员有:p,private成员有:k,不可见的成员有:m;这些成员中,对Derived类对象可见的只有public成员n,答案为A。31、有如下类声明:classHow{intk;public:~How(){cout<<"Bye";}};则类How所拥有的构造函数的数量是A、1B、2C、3D、4标准答案:B知识点解析:在类How定义中没有定义任何构造函数,所以编译器会自动生成一个默认构造函数,同时还生成复制构造函数,所以类How拥有两个构造函数,答案为B。32、有如下程序:#includeusingnamespacestd;classBase1{public:Base1(){}~Base1(){cout<<"b1";}};classBase2{public:Base2(){}~Base2(){cout<<"b2";}};classDerived:publicBase2,publicBase1{public:Derived(){}~Derived(){cout<<’d’;}};intmain(){Derivedobj;return0;}运行这个程序的输出是A、b1b2dB、b2b1dC、db1b2D、db2b1标准答案:C知识点解析:派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据成员,另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的;由于Derived类的派生列表中,Base2在前,所以应该先调用Base2的构造函数,再调用Base1的构造函数;销毁派生类对象时,总是按照构造函数运行次序的相反顺序调用析构函数,首先运行派生类析构函数,然后按继承层次依次向上调用各基类函数;所以Derived对象销毁时,首先调用Derived的析构函数,接着调用Base1的析构函数,最后调用Base2的析构函数;输出结果为:"db1b2",答案为C。33、若Pay是一个类名,则执行语句Payp1,p2[2],*p3;时Pay的构造函数被调用的次数是A、1B、2C、3D、4标准答案:C知识点解析:程序定义了Pay对象p1,Pay对象数组p2和Pay对象指针p3,编译器自动生成默认构造函数初始化p1对象和p2的两个对象元素;p3没有初始化,没有调用构造函数,答案为C。34、有如下类声明和函数声明classBase{intm;public:intn;protected:intp;};classDerived:protectedBase{public:intk;};voidf(Derivedd);则在函数f中通过d可访问的数据成员的个数是A、1B、2C、3D、4标准答案:A知识点解析:保护继承中,基类的public和protected成员在派生类中都是protected成员,所以类Derived中,public成员为:k,protected成员为:n、p,没有private成员,m对Derived不可见;Derived对象d可访问的只有public成员,即k;答案为A。35、有如下类定义:classPet{charname[30];public:Pet(char*n){strcpy(name,n);}voidbark(){cout<<"Woof!";}};且有如下变量定义:Petmy_dog("Weiwei"),&p=my_dog;则下列访问成员函数bark的表达式中,错误的是A、p.bark()B、my_dog.bark()C、p->bark()D、(&p)->bark()标准答案:C知识点解析:p为Pet类的引用类型,引用的对象是my_dog,p->bark()用法是错误的,至于选项D,&p是p的地址,通过地址使用箭头访问运算符访问bark(),正确;答案为C。36、有如下程序#includeusingnamespacestd;classAA{charc;public:AA():c(’X’){}AA(charch):c(ch){}AA(AA&aa):c(aa.c){}~AA(){cout<<3;}charvalue()const{returnc;}};voidf1(AAa){cout<A、X3Y3B、XY33C、Y3X3D、YX33标准答案:C知识点解析:main函数中,调用f1函数,创建局部对象AA(’Y’),此时形参a就是AA(’Y’)对象,输出a.value(),即"Y",f1函数执行完之后,需要销毁AA(’Y’)对象,调用AA类的析构函数~AA(),输出"3";接着程序调用f2函数,f2函数创建局部对象的引用a并初始化指向AA(),此时引用a所指对象的成员c值为"X",输出为"X",f2函数执行完之后,需要销毁a所指对象AA(),调用AA类的析构函数~AA(),输出"3",程序结束;运行结果为:"Y3X3",答案为C。37、在下列枚举符号中,用来定位文件开始位置的方式是A、ios_base::curB、ios_base::begC、ios_base::outD、ios_base::end标准答案:B知识点解析:ios_base::cur是指文件的当前位置;ios_base::end指向文件尾部;ios_base::beg指向文件开始;ios_base::out文件操作的文件模式;答案为B。38、若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTempp1;MyTempp2;MyTempp3[4];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是A、1B、2C、3D、6标准答案:C知识点解析:题目中使用MyTemp类模板定义了三种类型的类对象,所以生成的模板MyTemp实例有3个,答案为C。39、下列关于模板的表述中,正确的是A、如果一个类中存在纯虚函数,这个类就是类模板B、函数模板不能带有形式参数表C、类模板带有模板形参表D、类模板中不能包含构造函数标准答案:C知识点解析:存在纯虚函数的类是抽象基类,选项A错误;函数模板的形参表不能为空,不然定义函数模板也没有意义,选项B错误;类模板中是可以包含构造函数的,选项D错误。答案为C。40、下列关于基类和派生类关系的叙述中,正确的是A、派生类中的成员可以访问基类中的任何成员B、每个类最多只能有一个直接基类C、对基类构造函数的调用不能出现在派生类构造函数的初始化列表中D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:派生类对基类成员的访问权限由基类成员的访问标识和类派生列表中的访问标识共同决定的,选项A错误;多重继承的派生类可以有多个直接基类,选项B错误;派生类构造函数可以隐式调用基类的默认构造函数初始化对象的基类部分,也可以在派生类构造函数初始化列表中显示调用基类构造函数,选项C错误;答案为D。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)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、面向对象方法中,继承是指()。A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。7、层次型、网状型和关系型数据库划分原则是()。A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。8、一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。9、数据库设计中反映用户对数据要求的模式是()。A、内模式B、概念模式C、外模式D、设计模式标准答案:C知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择C。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。10、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、差C、交D、并标准答案:B知识点解析:关系T中的元组是R关系中有而S关系中没有的元组的集合,所以进行的是差的运算。11、下列符号中能够作为C++标识符的是()。A、constB、2aC、_shapeD、count标准答案:C知识点解析:本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项A是关键字,选项B不能以数字开头,选项D包含了字符"-",且不能以此字符开头。故答案为C。12、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};则下列说法中错误的是()。A、枚举常量YELLOW的值为1B、枚举常量RED的值为6C、枚举常量BLACK的值为10D、枚举常量WHITE的值为1标准答案:D知识点解析:C++语言规定枚举常量的默认值依次等于0,1,…,n-l。也可以给枚举常量赋初值,方法是:在枚举常量的后面跟上"=整型常量",在给枚举常量赋初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的规则依次赋初值。所以本题答案为D。13、执行下列语句段后,输出字符"*"的个数是()。for(inti=50;i>1;i-=2)cout<<′*′;A、24B、25C、26D、50标准答案:B知识点解析:本题考查for循环语句,题目中每执行完循环体后,i都会减2,那么只有50到2之间的偶数才能输出"*",所以总共输出25次。14、有如下定义: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。15、下列语句中错误的是()。A、constinta;B、constinta=10;C、constint*point=0;D、constint*point=newint(10);标准答案:A知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。A选项没有初始化,B、C、D选项都正确。16、已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则()。A、FA必须定义在FB之前B、FB必须定义在FA之前C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D、若FB定义在FA之后,则FB的原型必须出现在FA的定义之前标准答案:D知识点解析:如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对被调用的函数作声明。17、下列关于运算符函数的描述中,错误的是()。A、运算符函数的名称总是以operator为前缀B、运算符函数的参数可以是对象C、运算符函数只能定义为类的成员函数D、在表达式中使用重载的运算符相当于调用运算符重载函数标准答案:C知识点解析:运算符函数可以定义为类的友元函数。所以C选项错误。18、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。19、若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。A、Data+(Data);B、Dataoperator+(Data);C、Data+operator(Data);D、operator+(Data,Data);标准答案:B知识点解析:根据重载加法运算符的格式,只有B选项正确。20、已知函数f的原型是voidf(int*a,long&b);,变量v1、v2的定义是:intv1;longv2;下列调用语句中正确的是()。A、f(v1,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,v2);标准答案:D知识点解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。本题中函数f的第一个形参为指针,那么调用f函数时,第一个参数必须是地址,所以必须是&v1,第二个形参为引用,所以对应实参为v2即可。故本题答案为D。21、已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuev,inti=0);D、Valueoperator+(Valuev=value,inti=0);标准答案:A知识点解析:本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所以本题答案为A。22、下列关于运算符重载的描述中,正确的是()。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:A知识点解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。C++有5个运算符不能重载,它们是:.(成员访问运算符)、.*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。23、下列有关类成员的叙述中,正确的是()。A、友元函数是类的成员函数B、类成员的默认访问权限是私有的C、类成员函数必须声明为公有的D、类的静态数据成员不能是常成员标准答案:B知识点解析:友元函数是指某些虽然不是类成员却能访问类的所有成员的函数,故友元函数不是类的成员函数。类成员的默认访问权限是私有的,类的成员函数可以是3种权限中的一种,静态数据成员可以为常成员。故本题答案为B。24、有如下类定义:classPoint{private:staticinthow_many;};how_many=0;要初始化Point类的静态成员how_many,下画线处应填入的内容是()。A、intB、staticintC、intPoint::D、staticintPoint::标准答案:C知识点解析:本题考查静态数据成员,静态数据成员可以初始化,但只能在类体外进行初始化,其一般形式为:数据类型类名::静态数据成员名=初值。所以本题答案为C。25、有如下头文件:intf1();staticintf2();classMA{public:intf3();staticintf4();};在所描述的函数中,具有隐含的this指针的是()。A、f1B、f2C、f3D、f4标准答案:C知识点解析:只有类的非静态成员函数才隐含this指针,其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。所以本题答案为C。26、下列有关类继承的叙述中,错误的是()。A、继承可以实现软件复用B、虚基类可以解决由多继承产生的二义性问题C、派生类构造函数要负责调用基类的构造函数D、派生类没有继承基类的私有成员标准答案:D知识点解析:3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。27、在下列关键字中,不能用来表示继承方式的是()。A、privateB、staticC、publicD、protected标准答案:B知识点解析:3种继承方式:公用继承、私有继承和保护继承分别使用public、private和protected3个关键字来定义。28、有如下两个类定义:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在类YY中保护成员变量的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员x2、x3变成了保护成员,派生类中的y2也是保护成员,所以共有3个保护成员。本题答案为C。29、有如下类定义: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个构造函数。30、有如下类和对象的定义:classConstants{public:staticdoublegetPI(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是()。A、cout<getPI();和cout<B、cout<C、cout<getPI();和cout<getPI();D、cout<标准答案:D知识点解析:本题考查静态成员函数。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员。引用静态成员函数有2种方式,一种是直接使用类来引用,即Constants::getPI();另一种是使用对象来引用,即constants.getPI()。所以本题答案为D。31、有如下程序:#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。32、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operator=(constMyClass&x){cout<<3;return*this;}~MyClass(){cout<<4;}};intmain(){MyClassobj1(1),obj2(2),obj3(obj1);return0;}执行这个程序的输出结果是()。A、112444B、11114444C、121444D、11314444标准答案:A知识点解析:本题考查构造函数和复制构造函数以及重载运算符。本题中先后定义了两个对象obj1,obj2,依次输出11,然后定义了对象obj3,调用复制构造函数,输出2,最后执行三次析构函数,输出444。33、有如下类声明:classBase{protected:intamount;public:Base(intn=0):amount(n){}intgetAmount()const{returnamount;}};classDerived:publicBase{protected:intvalue;public:Derived(intm,intn):value(m),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知识点解析:本题考查公有继承中派生类对象对基类的访问属性。在公有继承中,派生类对象只能访问基类的公有成员,而不能访问基类的保护成员和私有成员。题中x是派生类的对象,只能访问基类中公有的Base()和getAmount()成员,而不能访问保护类型的amount成员,故选项C、D错误。而类对象对类成员的访问也存在类似的情况,即类对象只能访问类的公有成员,而value是Derived的保护成员,所以A选项也错误。故答案为B。34、有如下程序:#includeusingnamespacestd;classAA{intk;protected:intn;voidsetK(intk){this->k=k;}public:voidsetN(intn){this->n=n;}};classBB:publicAA{/*类体略*/};intmain(){BBx;x.n=1;//1x.setN(2);//2x.k=3;//3x.setK(4);//4return0;}在标注号码的四条语句中正确的是()。A、1B、2C、3D、4标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以本题中n、k和setK变为了派生类的保护成员,不能直接使用,即1、3、4错误,所以B选项正确。35、有如下程序:#includeusingnamespacestd;classBase{intx;public:Base(intn=0):x(n){cout<A、375B、357C、0375D、0357标准答案:C知识点解析:本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。本题中定义了一个对象d1,先执行基类的构造函数输出0,再执行派生类的构造函数输出3,然后定义了一个对象d2(5,7),其中需要调用基类的构造函数输出7,最后输出5,所以答案为C。36、有如下程序:#includeusingnamespacestd;classGA{public:virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){cout<A、1111B、1211C、1112D、1212标准答案:C知识点解析:本题主要考察虚函数。虚函数指在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,执行show(a)、display(a),输出11,定义了类GB的对象b,执行show(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所以本题答案为C。37、下列有关模板的叙述中,正确的是()。A、函数模板不能含有常规形参B、函数模板的一个实例就是一个函数定义C、类模板的成员函数不能是模板函数D、用类模板定义对象时,绝对不能省略模板实参标准答案:B知识点解析:本题考查函数模板和类模板的基础知识,所以本题答案为B。38、下面是一个模板声明的开始部分:templatedouble…由此可知()。A、这可能是一个函数模板的声明B、这可能是一个类模板的声明C、这既可能是一个函数模板的声明,也可能是一个类模板的声明D、这肯定是一个错误的模板声明标准答案:A知识点解析:本题考查函数模板和类模板的基础知识,从templatedouble这里就可以看出这是一个函数模板的声明。39、C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是()。A、coutB、cinC、cerrD、cset标准答案:D知识点解析:C++标准数据流的对象分别是cout、cin、cerr、clog,所以本题答案为D。40、下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是()。A、cout<B、cout<C、cout<D、cout<标准答案:D知识点解析:本题考查控制输出格式,A、B、C选项都会输出"12345",只有D选项输出"12345",所以本题答案为D。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、下列关于栈叙述正确的是()。A、栈顶元素最先能被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素最先被删除标准答案:A知识点解析:栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A。2、下列叙述中正确的是()。A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D、以上说法均不正确标准答案:C知识点解析:栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C。3、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)()。A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,多为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。4、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、学生成绩管理系统B、C语言编译程序C、UNIX操作系统D、数据库管理系统标准答案:A知识点解析:软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。所以B)、C)、D)都是系统软件,只有A)是应用软件。5、结构化程序所要求的基本结构不包括()。A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。6、下面描述中错误的是()。A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A)错误。7、负责数据库中查询操作的数据库语言是()。A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。8、一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是()。A、1:1联系B、1:m联系C、m:1联系D、m:n联系标准答案:D知识点解析:因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为m:n。9、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、并C、交D、差标准答案:D知识点解析:关系T中的元组是关系R中有而关系S中没有的元组的集合,即从关系R中除去与关系S中相同元组后得到的关系T。所以做的是差运算。10、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:只有B)选项369可以用无符号整数来表示和存储。A)选项-369有负号,选项C)0.369是小数都不能用无符号整数类存储。选项D)是一个整数集合得用数组来存储。11、下列字符串中可以用作C++标识符的是A、1481varB、test-1481C、trueD、_123标准答案:D知识点解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线3种字符组成,且第一个字符必须为字母或者下划线。C选项为C++的特定标识符,只有D选项正确。12、下列枚举类型的定义中,包含枚举值3的是A、enumtest{LEFT,UP,RIGHT,DOWN};B、enumtest{LEFT,UP=5,RIGHT,DOWN};C、enumtest{LEFT=-1,UP,RIGHT,DOWN};D、enumtest{LEFT,UP,RIGHT=6,DOWN};标准答案:A知识点解析:枚举常量的定义enum枚举类型名{常量1,常量2,常量3,.......};A选项包含的枚举值为0、1、2、3,B选项包含的枚举值为4、5、6、7,C选项包含的枚举值为-1、0、1、2,D选项包含的枚举值为4、5、6、7,所以A选项正确。13、有如下程序段:inti=1;while(1){i++;if(i==30)break;if(i%3==0)cout<<’*’;}执行这个程序段输出字符*的个数是A、30B、8C、9D、10标准答案:C知识点解析:本题中while循环中当i为3的倍数时输出*,而i为30时跳出循环,所以输出9个*,答案为C。14、已知数组arr的定义如下:intarr[5]={1,2,3,4,5};下列语句中输出结果不是3的是A、cout<<*arr+2<B、cout<<*(arr+2)<C、cout<<arr[2]<D、cout<<*arr<标准答案:D知识点解析:本题考查以为数组和指针,一维数组名可以作为一个指针,指向数组的第一个元素,题目中要求输出3,那么就是指向了数组的第三个元素,*arr表示数组的第一个元素1,所以输出不出来3,所以选择D选项。15、下列叙述中,错误的是A、true是一个逻辑型常量B、x是一个字符型常量C、100是一个int常量D、2.71828是一个double常量标准答案:B知识点解析:考查常量定义,B选项中"x"为一个字符串,’x’才是字符常量,所以B选项错误。16、在C++中,用来取代C中的预处理宏函数的是A、重载函数B、友元函数C、递归函数D、内联函数标准答案:D知识点解析:内联函数具有一般函数的特性,它与一般函数所不同之处公在于函数调用的处理。一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,内联函数被发明出来就是为了取代C中的宏,所以答案为D。17、通过运算符重载,可以改变运算符原有的A、优先级B、结合性C、操作数类型D、操作数个数标准答案:C知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为C。18、在函数中,定义一个变量时,默认的存储类型是A、externB、autoC、registerD、static标准答案:B知识点解析:extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。在C++语言中auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。在变量前,加上关键字static,该变量就被定义成为一个静态变量,该变量在全局数据区分配内存,所以答案为B。19、下列运算符函数中肯定不属于类Can的成员函数的是A、Canoperator-(Can);B、Canoperator-();C、Canoperator-(Can,Can);D、Canoperator-(int);标准答案:C知识点解析:答案C的形式是重载为友元函数,而友元函数不属于类的成员函数。所以重载为友元函数需要两个参数,通过参数传递的方式得到参加运算的两个对象。其他的是重载为类的成员函数,由于对象本身代表了一个操作数,所以其参数只需要一个,其为参加运算的另一个操作数。20、关于函数声明格式中的<返回类型>,下列叙述错误的是A、<返回类型>有可能包含关键字trueB、<返回类型>有可能包含自定义标识符C、<返回类型>有可能包含字符*D、<返回类型>有可能包含关键字float标准答案:A知识点解析:本题考查函数返回类型,函数返回类型可以是普通常量型的,可以返回指针以及自定义类型,但是不能包含关键字true,所以A选项错误。21、下列关于运算符重载的叙述中,错误的是A、不能通过运算符重载在C++中创建新的运算符B、赋值运算符只能重载为成员函数C、运算符函数重载为类的成员函数时,第一操作数是该类对象D、重载类型转换运算符时,应声明返回类型为void标准答案:D知识点解析:本题考查运算符重载,重载不能定义新的运算符,且赋值运算符只能重载为成员函数,重载类型转换运算符时,声明返回类型不一定是void,所以D选项错误。22、下列运算符中,不能被重载的是A、||B、+=C、.D、--标准答案:C知识点解析:本题考查运算符重载,不能重载的运算符只有5个:.、.*、::、sizeof、?:所以本题选择C。23、有如下两个类定义:classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一个成员变量的定义是错误的,这个变量是A、v1B、v2C、v3D、v4标准答案:C知识点解析:本题考查类的定义,类定义中不能包含自己本身的对象,否则会引起像无限递归的问题,结果就是内存被消耗殆尽。所以C选项错误。24、Sample是一个类,且有如下语句:Samplea[2],*p=newSample;执行这个语句时调用Sample类的构造函数的次数是A、0B、1C、2D、3标准答案:D知识点解析:本题考查默认构造函数,题中定义了二维对象数组以及一个指针对象,那么构造函数就执行3次,答案为D。25、当一个类对象行将消亡时,系统自动调用A、析构函数B、构造函数C、静态函数D、友元函数标准答案:A知识点解析:当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后"的工作。所以选择A。26、下列关于派生类构造函数和析构函数的叙述中,错误的是A、如果基类中没有缺省构造函数,那么派生类必须定义构造函数B、派生类的构造函数会隐含调用基类的构造函数C、在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D、在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数标准答案:D知识点解析:本题考查派生类的构造函数和析构函数的调用顺序,在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数,所以D选项错误。27、派生类的成员函数不能访问的基类的成员是A、公有成员和保护成员B、公有成员C、保护成员D、私有成员标准答案:D知识点解析:本题考查派生类对基类成员的访问属性,派生类无论何种继承,派生类的成员函数都不能访问基类的私有成员,所以D选项错误。28、有如下类定义:classAA{inta;public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)__________};其中横线处缺失部分是A、:AA(n){}B、:a(n){}C、{a(n);}D、{a=n;}标准答案:A知识点解析:本题考查派生类的构造函数,其一般形式为:派生类构造函数名(总参数表列):基类构造函数名(参数表列)所以只有A选项正确。29、有如下类定义:classBox{public:doubleGetLength(){returnlength;}doubleGetWidth();doubleGetHeight();private:doublelength,width,height;};inlinedoubleBox::GetWidth(){returnwidth;}doubleBox::GetHeight(){returnheight;}在成员函数GetLenth、GetWidth和GetHeight中,内联函数有A、3个B、2个C、1个D、0个标准答案:B知识点解析:在类体中定义的成员函数,C++系统会自动将它们作为内联函数处理,而在类外定义的成员函数,系统并不把它们默认为内联函数,使用inline也是内联函数,所以共有2个内联函数GetLength和GetWidth,B选项正确。30、已知TV是一个类,并有函数func定义如下:voidfunc(){TVli,*net[2],company[3];}则在调用func()后,TV类的析构函数被调用的次数是A、2次B、3次C、4次D、6次标准答案:C知识点解析:本题考查默认析构函数,题中定义了对象、包含三个元素的一维对象数组,所以析构函数执行4次,而对象指针数组并没有实际占用空间,所以不执行析构函数。31、有如下程序:#include#includeusingnamespacestd;classMyBag{public:MyBag(stringbr="ABC"):brand(br){cout<A、MyBagarrays[2];B、MyBag*arrays=newMyBag[2];C、MyBagarrays[2]={MyBag("ABC")};D、MyBagarrays[2]={MyBag("CityLife"),MyBag("Micky")};标准答案:D知识点解析:本题考查构造函数的应用,题目中A、B、C、D,都定义了包含两个元素的一维数组,A、B、C都执行题目中的构造函数,并且输出"ABCABC",而D选项中由于构造函数参数不为ABC,所以输出为"CityLifeMicky"32、有如下程序:#includeusingnamespacestd;classTV{public:TV(ints=41):size(s){}voidPrint(){cout<<’/’<<’N’<A、/N41/S54B、/N41/C54C、/C41/S54D、/C41/C54标准答案:A知识点解析:本题考查构造函数相关知识,本题中定义一个对象room1,执行room1.Print时执行构造函数给size赋值为41,然后执行voidPrint(){cout<<’/’<<’N’<33、有如下类定义:classPerson{public:Person(strings):name(s){}protected:stringname;};classFather:virtualpublicPerson{public:Father(strings):Person(s){}};classMother:virtualpublicPerson{public:Mother(strings):Person(s){}};classChild:publicFather,publicMother,virtualpublicPerson{public:Child(strings1,strings2,strings3):Mother(s1),Father(s2),Person(s3){}};在建立派生类Child的对象时,其基类Father、Mother和Person的构造函数的调用顺序为A、Father,Mother,PersonB、Mother,Father,PersonC、Person,Father,MotherD、Father,Person,Mother,Person,Person标准答案:C知识点解析:执行派生类构造函数的顺序是:1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类构造函数,所以本题中先调用基类person构造函数,然后执行father构造函数,最后执行mother构造函数。34、有如下程序:#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0):x(xx),y(yy){}protected:voidSetXY(intxx,intyy){x=xx;y=yy;}private:intx,y;};classCircle:publicPoint{public:Circle(intr):radius(r){}voidSet(intr,intx,inty){radius=r;SetXY(x,y);}//①voidPrint()const{cout<A、①B、②C、③D、④标准答案:B知识点解析:本题考查对象成员的引用,派生类公用继承基类,但是不能继承基类的私有成员,所以执行voidPrint()const{cout<35、有如下程序:#include#include
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026福建三明市公安局沙县分局招聘警务辅助人员29人笔试备考题库及答案解析
- 2026广东揭阳榕城区司法局招聘司法所专职人民调解员1人考试备考题库及答案解析
- 2026江苏徐州市口腔医院招聘非在编工作人员37人考试备考试题及答案解析
- 2026年高端芯片行业分析报告及未来发展趋势报告
- 2026国网天津市电力公司高校毕业生招聘78人(第三批)考试备考试题及答案解析
- 2026年互联网音频行业分析报告及未来发展趋势报告
- 2026年高速铁路旅客运输行业分析报告及未来发展趋势报告
- 2026海南乐东黎族自治县交通运输综合服务中心招聘1人考试备考试题及答案解析
- 2026年一体机办公设备行业分析报告及未来发展趋势报告
- 2026年3D购物行业分析报告及未来发展趋势报告
- 湖南 2026 政府采购评审专家续聘考试(3) 真题
- 2026天津富凯建设集团有限公司招聘工作人员招聘4人考试参考题库及答案解析
- 2026年pcb维修主管测试题及答案
- 2025年芯片测试岗笔试题目及答案
- 2026年无人机植保技术考试题库及答案
- 2026-2030中国摩洛哥坚果油行业市场发展分析及竞争格局与投资前景研究报告
- 电梯施工临时用电安全方案
- 亚克力生产车间安全讲解
- 银川市、石嘴山市、吴忠市三市2026年高三年级学科教学质量检测 政治+答案
- 采购廉洁行为准则制度
- TSG 08-2026 特种设备使用管理规则
评论
0/150
提交评论