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

下载本文档

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

文档简介

国家二级(C++)机试模拟试卷38(共9套)(共366题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共38题,每题1.0分,共38分。)1、运算符重载是对已有的运算符赋予多重含义,因此()。A、可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B、可以改变一个已有运算符的优先级和操作数个数C、只能重载C++中已经有的运算符,不能定义新运算符D、C++中已经有的所有运算符都可以重载标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。2、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值的成员函数标准答案:A知识点解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。3、设程序如下:#includeusingnamespacestd;intmain(){int**p,*q,r=10;q=&r;p=&q;cout<<**p+1<A、p的地址B、r的地址C、11D、运行错误标准答案:C知识点解析:p为一个二级指针,其存放的是指针变量q的地址,而q存放的又是r的地址。故式子**p相当于对r的引用。所以最后输出的结果为11。4、关于在调用模板函数时模板实参的使用,下列表述中正确的是()。A、对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B、对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C、对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D、对于常规参数所对应的模板实参,任何情况下都不能省略标准答案:D知识点解析:在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用“<>”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空表“<>”也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。5、在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是()。A、ios_base::curB、iosbase::begC、ios_base::outD、iosbase::end标准答案:A知识点解析:streamoff定义于iostream.h中,定义有偏移量offset所能取得的最大值,seek_dir表示移动的基准位置,是一个有以下值的枚举:ios::beg:(文件开头)、ios::cur:(文件当前位置)、ios::end:(文件结尾)。6、下面不属于C++的预定义的流对象是()。A、cinB、iostreamC、clogD、cerr标准答案:B知识点解析:C++中的四个预定义流对象:cout,cin,cerr,clog。7、有以下程序段:#include#defineMAX(x,y)(x)>(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=MAX(i,j)*10;cout<A、15B、100C、150D、10标准答案:C知识点解析:题目程序中的MAX函数是利用条件运算符为?:求最大值。即(x>y)?(x):(y)是当x大于y时取x,否则取y。当i:10,j=15时,“MAX(i,j)”的值为15,所以“k=MAX(i,i)*10;”答案为:150。8、有以下程序:#includeusingnamespacestd;classR{public:R(intr1,intr2){R1=r1;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidR::print0{cOut<A、5,4B、4,5C、20,52D、52,20标准答案:C知识点解析:此题中,语句Ra(5,4)调用构造函数R(intr1,intr2)但未有输出结果;b.print();调用常成员函数(因为b是常对象)voidprint()const,输出结果是20,52。9、有如下程序:#includeusingnamespaeestd;classBook{public:Book(char*t=""){strcpy(title,t);}private:chartitle[40];};classNovel:publicBook{public:Novel(char*t=""):Book(t){}charagCategory()const{return"文学";}};intmain(){Book*pb;pb=newNovel();cout<Category();deletepb;return0;}若程序运行时输出结果是“文学”,则横线处缺失的语句是()。A、charagCategory();B、char*Category()const;C、virtualchar*Category()const;D、virtualchar木Category()const=0;标准答案:D知识点解析:本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”为0的函数,包含纯虚函数的类为抽象类,抽象类是不能被实例化的,但是可以定义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派生类的对象,然后通过该指针调用虚函数,实现多态性的操作。所以本题答案为D。10、下列对重载函数的描述中,()是错误的。A、重载函数中不允许使用默认参数B、重载函数中编译是根据参数表进行选择C、不要使用重载函数来描述毫不相干的函数D、构造函数重载将会给初始化带来多种方式标准答案:A知识点解析:选项A)中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫无相干的函数;重载函数中编译是根据参数表进行选择,包括参数的个数和类型。11、在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。A、逻辑设计B、需求分析C、详细设计D、物理设计标准答案:B知识点解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。12、数据库设计中反映用户对数据要求的模式是()。A、内模式B、概念模式C、外模式D、设计模式标准答案:C知识点解析:数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择c。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。13、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数体来替换,一般只将规模很小而使用频繁的函数声明为内联函数,可以避免函数调用时间开销,从而提高运行速度。14、定义无符号整数为Uint,下面可以作为类Uint实例化值的是()。A、-369B、369C、0.369D、整数集合{1,2,3,4,5}标准答案:B知识点解析:A是有符号数,C是浮点数,D是结合并不是类的实例化对象,只有B完全符合。15、有如下类和对象的定义:classConstants{public:staticdoublegetPI(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是()。A、cout<getPl();和cout<B、cout<C、cout<getPI();和cout<getPI();D、cout<标准答案:D知识点解析:本题考查静态成员函数。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员。引用静态成员函数有2种方式,一种是直接使用类来引用,即Constants::getPI();另一种是使用对象来引用,即constants.getPI()。所以本题答案为D。16、下列关于构造函数的描述中,错误的是()。A、构造函数名与类名相同B、构造函数可以有返回值C、构造函数可以重载D、每个类都有构造函数标准答案:B知识点解析:构造函数没有返回值,虽然叫函数,但是它没有任何返回值,包括void型都不是,官方叫法应该叫“构造器”。17、下面描述错误的是()。A、模块的独立性与模块的信息隐蔽和局部化无关B、内聚性和耦合性是模块独立程度的定性度量标准C、一个模块的内聚性越高则该模块的独立性越强D、一个模块的耦合性越高则该模块的独立性越弱标准答案:A知识点解析:模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。模块的独立性是指软件模块的编写和修改应使其具有独立功能,且与其他模块的关联尽可能少。故本题答案为A选项。18、有如下类声明:classFin{public:Fin();//①Fin*pf;//②Finf;//③Fin&p;//④};在标有数字的四个成员声明中,将产生编译错误的是()。A、①B、②C、③D、④标准答案:C知识点解析:只有当类定义体完成之后才能定义类,题目中四个声明语句位置,Fin类未定义完整,属于不完全类型,此时数据成员只能是指向该类类型的指针或引用,而不能是该类的对象;语句3会产生编译错误;答案为c。19、下列关于构造函数的叙述中,错误的是()。A、构造函数名与类名相同B、构造函数可以有返回值C、构造函数可以重载D、每个类都有构造函数标准答案:B知识点解析:C++中,构造函数名与类名相同,选项A正确;构造函数没有返回值,选项B错误;构造函数支持函数重载,调用时根据参数类型或函数的const属性调用不同的构造函数,选项C正确;如果没有给类定义任何构造函数,编译器在需要的时候会自动生成一个默认构造函数,选项D正确;本题答案为B。20、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度标准答案:B知识点解析:耦合是指模块间相互连接的紧密程度,内聚性是指在一个模块内部各个元素彼此之间接合的紧密程序。高内聚、低耦合有利于模块的独立性。21、下列叙述中正确的是A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。22、有以下程序:classDate{public:Date(inty,intm,intd);{year=y;month=m;day=d;}Date(inty=2000){year=y;month=10;day=1;}Date(Date&d){year=d.year;month=d.month:day=d.day;}voidprint(){cout<A、2B、3C、4D、5标准答案:B知识点解析:本题考核复制构造函数。上述程序中,复制构造函数一共被调用了3次:第1次是在执行语句Datedate3(date1)时,用已经建立的对象date1对正在建立的对象date3进行初始化;第2次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第3次是在执行fun函数中的返回语句returntemp;时,系统初始化一个匿名对象时使用了复制构造函数。23、下面关于派生类的描述中错误的是()。A、派生类中至少有一个基类B、一个派生类可以作为另一个派生类的基类C、派生类只继承了基类中的公有成员和保护成员D、派生类的缺省继承方式是私有标准答案:C知识点解析:继承方式有公有继承、私有继承和保护继承3种,缺省的继承方式是私有继承。派生类从基类继承所有的成员,但是对于基类的私有成员派生类是不可直接访问的。24、下面关于派生类的描述中错误的是()。A、派生类中至少有一个基类B、一个派生类可以作为另一个派生类的基类C、派生类只继承了基类中的公有成员和保护成员D、派生类的缺省继承方式是私有标准答案:C知识点解析:继承方式有公有继承、私有继承和保护继承3种,缺省的继承方式是私有继承。派生类从基类继承所有的成员,但是对于基类的私有成员派生类4是不可直接访问的。25、有如下类定义:classMyClass{public:MyClass(doubled=0.0):val(d){}______________//前缀自增运算符++的声明private:doubleval;};若要使语句序列MyClassx(2.1),y;y=++x;能够正常运行,横线处的语句应为A、MyClass&operator++();B、MyClass&operator++(int);C、MyClassoperator++(int);D、MyClassoperator++();标准答案:A知识点解析:横线处填写的语句,是重载前缀自增运算符++的函数声明,为了与内置类型一致,前缀自增运算符应该返回自增对象的引用,选项C、D错误;自增运算符是一元运算符,即操作数是类对象,所以参数列表为空,选项B错误;答案为A。26、下列模板声明中,有语法错误的是A、templateTfun(Tx){returnx;}B、templateTfun(Tx,intn){returnx*n;}C、templateTfun(T*p){return*p;}D、templateTclassA{Tn;};标准答案:D知识点解析:本题考查模板的定义,B选项中x为T类型的,n为int型的,但是x*n就不一定是T类型的,所以错误。27、有如下类定义:classMyBase{intk;public:MyBase(intn=0):k(n){}intvalue()const{returnk;}};classMyDerived:MyBase{intj;public:MyDerived(inti):j(i){}intgetK()const{returnk;}intgetJ()const{returnj;}};编译时发现有一处语法错误,对这个错误最准确的描述是()。A、函数getK试图访问基类的私有成员变量kB、在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或privateC、类MyDerived缺少一个无参的构造函数D、类MyDerived的构造函数没有对基类数据成员k进行初始化标准答案:A知识点解析:默认继承方式为私有继承,私有继承将基类的公用成员和保护成员都变为了私有成员,基类的私有成员依然属于基类私有,派生类不能访问基类的私有成员。所以A选项正确。28、有如下类定义:classPa{intk;public:Pa():k(0){}//①Pa(intn):k(n){}//②Pa(Pa&p):k(p.k){}//③};若执行语句Paa[]={Pa(1),Pa(2)};则在标有号码的构造函数中,被调用的包括A、①B、①和②C、②D、②和③标准答案:D知识点解析:对象数组,就是数组元素是类对象,不管对象数组在哪里定义,如果没有显式的调用构造函数初始化,编译器将使用类的默认构造函数初始化对象元素,这里程序中显式的使用构造函数Pa(intn)初始化各个元素,所以被调用的构造函数只有Pa(intn),没有调用默认构造函数和复制构造函数,答案为C。29、在一个程序文件中有如下语句:externintvar;关于这个语句,下列表述中错误的是A、var称为外部变量B、var定义在函数或类的外部C、var已在另一个程序文件中定义D、编译系统在处理这个语句时将为之分配空间标准答案:D知识点解析:extern定义的变量表示已经在别的地方定义,这里只是引用,所以不会对该变量分配内存空间,所以D选项错误。30、在数据库系统中,数据模型包括概念模型、逻辑模型和A、物理模型B、空间模型C、时间模型D、数据模型标准答案:A知识点解析:数据模型按照不同的应用层次分为3种类型:概念数据模型、逻辑数据模型、物理数据模型,故A选项正确。31、在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是A、()B、[]C、<>D、{}标准答案:C知识点解析:本题考查模板的定义,使用的括号为<>,所以答案为C选项。32、下列有关运算符重载的表述中,正确的是A、通过重载运算符时可以改变运算符的结合性B、通过运算符重载可以创造新的运算符C、C++中所有运算符都可以重载为非成员函数D、运算符重载是多态性的一种表现标准答案:D知识点解析:本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以答案为D。33、在软件开发中,需求分析阶段可以使用的工具是()。A、N-S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表,所以选择B。34、派生类的成员函数不能访问的基类的成员是A、公有成员和保护成员B、公有成员C、保护成员D、私有成员标准答案:D知识点解析:本题考查派生类对基类成员的访问属性,派生类无论何种继承,派生类的成员函数都不能访问基类的私有成员,所以D选项错误。35、下列关于模板的表述中,错误的是A、类模板的成员函数都是模板函数B、函数模板是一种参数化类型的函数C、满足一定条件时可以省略模板实参D、模板形参只能由关键字typename声明标准答案:D知识点解析:模板形参由关键字typename或者class声明,所以D选项错误。36、下列叙述中正确的是()。A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,所以B)正确。所以有一个以上根结点的数据结构一定是非线性结构,所以A)错误。循环链表和双向链表都是线性结构的数据结构。37、有如下程序:#includeusingnamespacestd:classMyClass{public:MyClass(){cout<<’A’;}MyClass(charc){cout<A、ABXB、ABXBC、AXBD、AXBB标准答案:D知识点解析:构造函数和析构函数的调用顺序为先构造的后析构,后构造的先析构。所以本题答案为D。38、语句int*p=&k;定义了指针p,与这个语句等效的语句序列是()。A、int*p;p=&k;B、int*p;p=k;C、int*p;*p=&k;D、int*p;*p=k;标准答案:A知识点解析:本题考查指针和地址,题目中定义了一个指向变量k的一个指针p,那么与题目中等效的表达式A选项,即先定义一个指向整型的指针,然后指向k的地址。二、基本操作题(本题共1题,每题1.0分,共1分。)39、请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程包含一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Youareright.注意:只修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#includeusingnamespacestd;classMyClass{public:MyClass(intx):number(x){}//ERROR********found********~MyClass(intx){}//ERROR********found********voidJudge(MyClass&obj);private:intnumber;};voidJudge(MyClass&obj){if(obj.number==10)cout<<"Youareright."<<endl;elsecout<<"Sorry"<标准答案:(1)~MyClass(){}(2)friendvoidJudge(MyClass&obj);(3)MyClassobject(10);知识点解析:(1)主要考查考生对析构函数的掌握,析构函数是没有形参的,因此把形参去掉即可,因为该类没有动态分配空间,所以不需要使用delete语句释放空间。(2)主要考查考生对友元函数的掌握,在函数定义中有语句voidJudge(MyClass&obj),在main函数中有语句Judge(object);,即Judge函数是可以被类外函数调用的,并且定义时没有加上类名和作用域,因此可以知道Judge函数是友元函数,需要在类型前加上friend。(3)主要考查考生对构造函数调用的掌握,题目要求输出结果为:Youarefight.,在Judge函数体内有语句:if(obj.number==10)cout<<"Youareright."<三、简单应用题(本题共1题,每题1.0分,共1分。)40、下列给定程序中,函数fun的功能是:根据整型形参见,计算如下公式的值:例如,若n=10,则应输出0.617977。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include#include#include/*********found*********/intfun(intn){floatA=1;inti;/*********found*********/for(i=2;i标准答案:(1)floatfun(intn)(2)Ior(i=2;i<=n;i++)知识点解析:(1)根据函数的返回值可知,函数应定义为float型。(2)该题中函数fun的作用是计算数列前n项的和,而数列的组成方式是:第n项的分母是1加第n—1项的值,分子为1,如果循环累加按for(i=2;i四、综合应用题(本题共1题,每题1.0分,共1分。)41、请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang20Tsinghua。注意:只能在函数address_change的“//***********333***********’’和“//***********666***********’’之间填入若干语句,不要改动程序中的其他内容。程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//proj3.h#include#includeusingnamespacestd;classPerson{charname[20];intage;char*addresS;public:Person(){age=0;address=0;}voidname_change(char*_name);//名字修改函数voidage_change(int_age);//年龄修改函数voidaddress_change(char*_add);//地址修改函数voidinfo_display();//人员信息显示~Person();//析构函数};voidwriteToFile(constchar*path);proj3.cpp#include#include#include"proj3.h"usingnamespacestd;voidPerson::name_change(char*name){strcpy(name,_name);}voidPerson::age_change(int_age){age=_age;}voidPerson.:address_change(char*add){if(address!=NULL)delete[]address;//*********333*********//*********666*********}voidPerson::info_display(){cout<标准答案:address=newchar[strlen(_add)+1];//给类成员变量动态分配空间strcpy(address,_add);//把字符串add复制给address知识点解析:函数address_change(char*_add)的功能是地址修改,也就是说通过该函数把类的地址修改为add字符串。类的私有成员address是字符指针,因此首先要给address分配空间,通过new语句来实现:address=newchar[strlen(_add)+1];。接下来就是要复制字符串,使用系统函数strcpy,其用法为strcpy(参数1,参数2),将参数2的内容复制到参数1中。国家二级(C++)机试模拟试卷第2套一、选择题(本题共39题,每题1.0分,共39分。)1、下列二叉树描述中,正确的是()。A、任何一棵二叉树必须有一个度为2的结点B、二叉树的度可以小于2C、非空二叉树有0个或1个根结点D、至少有2个根结点标准答案:B知识点解析:二叉树是由n≥0个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。二叉树具有如下两个特点:①非空二叉树只有一个根结点;②每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。2、在软件开发中,需求分析阶段可以使用的工具是()。A、N-S图B、DFD图C、PAD图D、程序流程图标准答案:B知识点解析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典。DD,判定树与判定表,所以选择B。3、下列关于指针的运算中,()是非法的。A、两个指针在一定条件下,可以进行相等或不等的比较运算B、可以将一个空指针赋值给某个指针C、一个指针可以加上两个整数之差D、两个指针在一定条件下可以相加标准答案:D知识点解析:指针变量如果指向同一个数组的元素,则可以进行比较,所以A)是正确的。指针变量的赋值就是将一个变量地址赋给一个指针变量。并且指针变量可以是空值,即该指针不指向任何变量。B)同样也是正确的。指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。即C)也是正确的。如果两个指针指向同一个数组元素,两个指针是可以相减的,标识两个指针之间的元素个数。但是它们是不可相加的。4、有如下类定义:classAA{inta;Public:AA(intn=0):a(n){}};classBB:publicAA{public:BB(intn)________________};其中横线处的缺失部分是()。A、:a(n){}B、:AA(n){}C、{a(n);}D、{a=n;}标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变量。所以本题答案为B。5、若有如下程序:#includeusingnamespacestd;ints=0:classsample{staticintn;public:sample(inti){n=i:}staticvoidadd(){S+=n:}}:intsample::n=0:intmain(){samplea(2),b(5);sample::add0;cout<A、2B、5C、7D、3标准答案:B知识点解析:执行语句“samplea(2),b(5)”;的结果是使n的值最终变为5,sample::add,0语句调用函数staticvoidadd(),使得S=S+n=5。6、下列符号中能够作为C++标识符的是()。A、constB、2aC、_shapeD、-count标准答案:C知识点解析:本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项A是关键字,选项B不能以数字开头,选项D包含了字符"-",且不能以此字符开头。故答案为C。7、已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是()。A、枚举常量NAME的值为1B、枚举常量NUMBER的值为1C、枚举常量MINUS的值为6D、枚举常量PRINT的值为10标准答案:A知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum类型名{枚举值表}。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右分别与整数0、1、2、3…n一1对应;若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1、m+2…对应,直到下一个赋了值的枚举值或结束。枚举常量NAME的值为0。8、在下列关键字中,不能用来表示继承方式的是()。A、privateB、staticC、publicD、protected标准答案:B知识点解析:3种继承方式:公用继承、私有继承和保护继承分别使用:public、private和protected3个关键字来定义。9、有如下程序:#includeusingnamespacestd;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知识点解析:本题调用了fun函数。10、某二叉树共有7个结点,其中叶子结点只有1个,则该二-X树的深度为(假设根结点在第1层)()A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。11、下列()是C++语言的有效标识符。A、No1B、No.1C、12345D、int标准答案:A知识点解析:标识符是一个以字母或下画线开始的,由字母、下画线和数字组成的字符串,标识符不能与任意关键字同名。12、有以下程序:#include<iostream.h>voidfun(inta,intb,intc){a=456,b=567,c=678;}voidmain(){intx=10,y=20,z=30;fun(x,y,z);cout<<x<<’,’<<y<<’,’<<z<<endl;}输出结果是()。A、30,20,10B、10.20,30C、456,567,678D、678,567,456标准答案:B知识点解析:本题考查函数中变量的作用范围,在主函数中给变量x、y、z赋值,然后将其作为实参传递给了函数fun(),虽然在函数fun()中改变了这3个变量的值,但只是同名的局部变量,不影响函数中变量的值,所以在调用函数fun()结束后,主函数3个变量的值未改变。13、在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是()。A、友元函数B、虚函数C、构造函数D、析构函数标准答案:C知识点解析:构造函数在创建对象时系统自动调用,其功能是使用给定的值将对象初始化。14、下列叙述中正确的是()。A、所谓算法就是计算方法B、程序可以作为算法的一种描述方法C、算法设计只需考虑得到计算结果D、算法设计可以忽略算法的运算时间标准答案:B知识点解析:算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序,A选项错误。算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果,C选项错误。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的,D选项错误。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法,B选项正确。15、下列选项中,正确的C++标识符是A、a^3B、a-3C、a’3D、a_3标准答案:D知识点解析:C++的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。A、B、C错误,答案为D。16、若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTempp1;MyTempp2;MyTempp3[4];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是A、1B、2C、3D、6标准答案:C知识点解析:题目中使用MyTemp类模板定义了三种类型的类对象,所以生成的模板MyTemp实例有3个,答案为C。17、有如下程序:intx=3;do{x-=2;cout<A、1B、30C、1-2D、死循环标准答案:C知识点解析:本题考查do...while语句,执行do...while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。在本题中,先执行循环体内的语句,输出1,然后判断表达式,为非零,且此时x为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为C。18、下列选项中,与实现运行时多态性无关的概念是A、重载函数B、虚函数C、引用D、指针标准答案:A知识点解析:C++中,实现运行时多态性必须满足两个条件:1、被调用的成员函数为虚函数;2、调用必须通过基类类型的引用或指针。选项B、C、D正确;多态性是虚函数在运行时期绑定,而重载的函数是在编译期绑定,重载主要是为了C++的代码复用,与多态性没有关系;答案为A。19、有如下类声明:classPam{intk;public:Pam(intn);voidshow()const{cout<A、Pam(intn):k(n){}B、Pam::Pam(intn):k(n){}C、voidPam(intn):k(n){}D、voidPam::Pam(intn):k(n){}标准答案:B知识点解析:构造函数不能指定返回类型,选项C、D错误;由于是在类定义体外定义函数,需要在函数名前给出函数的作用域,选项A错误;答案为B。20、有如下类声明:classPam{intk;public:Pam(intn):k(n){}voidshow()const;};若要在类体外给出成员函数show的定义,下列定义中正确的是A、voidshow()const{cout<B、voidshow()const{cout<C、voidPam::show()const{cout<D、voidPam::show()const{cout<标准答案:C知识点解析:在类定义体外定义成员函数,必须指定成员函数的作用域,因此需要在使用类名和作用域运算符来修饰函数名,答案为C。21、在E-R图中,用来表示实体联系的图形是()。A、椭圆形B、矩形C、菱形D、三角形标准答案:C知识点解析:在E-R图中实体集用矩形,属性用椭圆,联系用菱形。22、下列定义语句中,错误的是A、int*p[10];B、int*p();C、int(*p)();D、intp*;标准答案:D知识点解析:本题考查一维数组和指针,A选项为一维指针数组,B、C选项为函数指针,D选项定义指针方式不对,*号应该在p的左边。所以答案为D。23、构成计算机软件的是A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选D。24、在为一个类重载下列运算符时,只能作为该类成员函数重载的运算符是A、+B、()C、<<D、++标准答案:B知识点解析:本题考查重载运算符,C++规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选B。25、在数据库中,数据模型包括数据结构、数据操作和A、数据约束B、数据类型C、关系运算D、查询标准答案:A知识点解析:数据模型通常由数据结构、数据操作及数据约束3部分组成。故A选项正确。26、已知一程序运行后执行的第一个输出操作是cout<A、1234B、******1234C、**********1234D、1234******标准答案:B知识点解析:本题考查输入输出格式的控制,先是定义宽度为10个字符,然后填充字符,1234只有四个字符,所以要在左侧填充6个*,即输出******1234,B选项正确。27、有如下类声明:classMau{intk;public:Mau(intn):k(n){}intcalc()const;};则成员函数calc的下列定义中有编译错误的是A、intMau::calc()const{returnk-1;}B、intMau::calc()const{returnk*k;}C、intMau::calc()const{returnk+1;}D、intMau::calc()const{return++k;}标准答案:D知识点解析:函数calc()声明的形参表后面有关键字const,说明该函数是常成员函数,常成员函数改变了隐含的this形参的类型,使得this是指向const对象的指针,因而该函数只能读取数据成员的值,不能修改数据成员,所以D选项错误,答案为D。28、有如下类定义:classBase{public:inta;protected:intb;private:intc;};classDerived:publicBase{protected:intd;};若obj是类Derived的对象,以下语句编译正确的是A、obj.a;B、obj.b;C、obj.c;D、obj.d;标准答案:A知识点解析:类Derived以public方式继承Base,所以a在Derived中是public成员,b在Derived中是protected成员,c对Derived不可见;所以对类Derived对象obj可见的成员为a,答案为A。29、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是A、fstreamB、istreamC、ostreamD、iomanip标准答案:D知识点解析:本题考查格式控制相关知识,属于基础知识,需要包含iomanip,所以D选项正确。30、有如下程序段:inti=2;intj=3;intmain(){inti=9,j=i;cout<A、23B、93C、99D、39标准答案:C知识点解析:全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明,本题中定义了两个全局变量i,j,所以主函数中对全局变量重新赋值输出后为99,所以答案为C。31、有如下程序:#include#includeusingnamespacestd;classWheel{public:Wheel(strings="W"):name(s){cout<A、RFGB、FRGC、FRGGRFD、FRGFRG标准答案:C知识点解析:定义Bicyclebike时,执行Wheel的构造函数输出FR,然后执行Bicycle的构造函数输出G,最后执行析构函数,一次执行派生类的析构函数输出G,再输出基类的析构函数输出RF,最终输出FRGGRF,选项C正确。32、必须用一对大括号括起来的程序段是()。A、switch语句中的case标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体标准答案:D知识点解析:本题考查C++基本控制结构,A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。33、有如下程序:#includeusingnamespacestd;classPoint{public:Point(intxx=0,intyy=0):x(xx),y(yy){}voidSetX(intxx){x=xx;}voidSetY(intyy){y=yy;}private:intx,y;};classCircle:publicPoint{public:Circle(intr):radius(r){}intGetRadius(){returnradius;}private:voidSetRadius(intr){radius=r;}intradius;};intmain(){Circlec1(5);c1.SetX(1);//①c1.SetY(2);//②c1.SetRadius(10);//③cout<A、①B、②C、③D、④标准答案:C知识点解析:本题考查对象成员的引用,在类外引用对象的数据成员时,只能访问public成员而不能访问private成员所以C选项错误。34、有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司C(公司号,公司名,地址,注册资本,法人代表,员工数),职员S(职员号,姓名,性别,年龄,学历),工作W(公司号,职员号,工资),则表W的键(码)为A、公司号,职员号B、职员号,工资C、职员号D、公司号,职员号,工资标准答案:A知识点解析:由于职员可以再多加公司兼职,表W的键(码)应为公司关系和职员关系的主码,即公司号和职员号。35、有如下程序:#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。36、下列符号中,正确的C++标识符是()。A、enumB、2bC、foo-9D、_32标准答案:D知识点解析:本题考查C++标识符的命名规则,规定如下:①所有标识符可以由字母、数字和下画线组成,且必须以字母或下画线开头;②C++的关键字不能作为标识符;③大、小写字母表示不同意义,即代表不同的标识符,如mun和Mun。A选项是C++的关键字,B选项不能以数字开头,C选项"-"不能用于组成标识符。37、下列叙述中正确的是()。A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间标准答案:A知识点解析:链式存储结构既可以针对线性结构也可以针对非线性结构,所以B)与C)错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D)错误。38、已知函数func的原型为intfunc(int,int);下列重载函数原型中错误的是A、charfunc(int,int);B、boolfunc(int,int,bool);C、intfunc(int,char*);D、floatfunc(int,int,int);标准答案:A知识点解析:本题考查函数重载相关知识,重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。A选项的形参都与原函数相同,所以不能作为重载函数。39、下列各程序段中与语句temp=a>b?(b?>c1:0):0;等价的是()。A、if((a>b)&&(b>c))temp=1;elsetemp=0;B、if((a>b)||(b>c))temp=1;elsetemp=0;C、if(a<=b)temp=0;elseif(b<=c)temp=1;elsetemp=0;D、if(a>b)temp=1;elseif(b>c)temp=1;else标准答案:A知识点解析:题意中,表达式temp=a>b?(b>c?1:0):0是条件运算表达式,首先执行b>c?1:0,当b>c时,值为1;当b<=c时,值为0;接着执行a>b?(x):0,其中x的值为1或0,当a>b时,temp的值为x,否则temp的值为0;所以当a>b且b>c时,temp=1,否则temp=0,答案A满足,本题答案为A。二、基本操作题(本题共1题,每题1.0分,共1分。)40、给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。请在程序的中括号处填入正确的内容并把中括号删除,使程序得出正确的结果。注意:部分源程序在文件BLANKl.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include#defineN4voidfun(int(*a)[N],int*b){inti,j;for(i=0;i标准答案:(1)a[0][i](2)<(3)x,y知识点解析:填空1:数组b用于存放每列元素中的最大值,首先将第i列的第一个数赋给b[i],然后用b[i]与其他数进行比较,因此此空应填a[0][i]。填空2:if条件表达式表示当b[i]小于a[j][i]时,就把a[j][i]的值赋给b[i],因此此空应该填<。填空3:fun函数的调用,通过fun(int(*a)[N],int*b)可知,此空应该填x,y。三、简单应用题(本题共1题,每题1.0分,共1分。)41、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(char*des,char*str)的功能是去掉字符串str中相同的字母,并将处理后的结果存到des所指的字符串中。例如:输入:Thisisgreat!输出:Thisgrea!注意:不能修改程序的其他部分,只能补充fun()函数。#include#defineMAXLEN1024Voidconvert(char*des,char*str){}voidmain(){charsour[MAXLEN];chardest[MAXLEN];cout<<"Pleaseinputastring:"<标准答案:int1,j;boolTuAdd;des[0]=0;for(i=0;str[i]!=NULL;i++){ToAdd=true;for(j=0;des[j]!=NULL;j++){if(str[i]==des[j]){ToAdd=false;//des数组中已存在该元素,将标志位设置为假,说明不用再添加break;//des数组中已存在该元素,跳出循环}}if(ToAdd)//des数组中不存在,添加进来{des[j]=str[i];des[j+1]=0;}}知识点解析:(1)由审题分析可知,需要两重循环,外层循环不断读取str中的元素,内循环在des数组中查找读到的str中的字符,如果找到了des数组中已存在该元素不需要添加,如果没找到则添加到des数组中。(2)在外循环体内,先设置bool型的标志变量ToAdd为真,假设str[i]不存在在des数组中,然后再内循环中,用str[i]和des[j]比较.如果相同说明已经存在了,将ToAdd设置为假,des[j]后面的元素不需要再比较了,跳出内循环。(3)通过判断ToAdd可知,str[i]是否存在des数组中,如果ToAdd为真,则说明des数组中不存在str[i],将str[i]添加到des数组中。四、综合应用题(本题共1题,每题1.0分,共1分。)42、用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了多个类,但类不能达到输出要求,按照定义的输出修改函数,使得输出如下:TestClass3TestClass2TestClass1其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。(1)类TestClass2公共继承于TestClass1,请在注释//********1********后添加适当的语句。(2)print函数为虚函数,请在注释//********2********后添加适当的语句。(3)修改函数,使得p指定对象obj3,请在注释//********3********后添加适当的语句。(4)修改语句,利用p调用pnnt()函数,完成输出信息,注释********4********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#inc1ude<iostream>usingnamespacestd;c1assTestClass1{public:voidprint(){cout<<"TestClass1"<<end1;}};//*******1********c1assTestClass2{public://********2********voidprint(){cout<<"TestClass2"<<end1;}};c1assTestClass3:publicTestClass2{public:voidprint(){cout<<"TestClass3"<<end1;}};intmain(){TestClass20bj2;TestClass30bj3;TestClass1*p;obj2.print();obj3.print();//*********3*******p=obj3;//********4********p.print();return0;}标准答案:(1)将“classTestClass2”补充完整为:classTestClass2:publicTestClass1(2)将“voidprint()”补充完整为:virtualvoidprint()(3)将“p=obj3;”修改为:p=&obj3;(4)将“p.print(),”修改为:p—>print();知识点解析:本题的功能是通过print虚函数将字符串输出。在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的mam主函数开始入手,可以看出程序通过调用类和成员函数实现各种输出操作。(1)题目1要求“类TestClass2公共继承于TestClass1”。从已有的类产生一个新的子类,成为类的派生。声明派生类的一般形式为:class派生类名:[继承方式]基类名。根据题目中的要求以及派生类的一般形式,第1个标识下添加语句“classTestClass2:publicTestClass1”。(2)题目2要求“print函数为虚函数”。在C++中,用virtual声明的函数为虚函数,因此第2个标识下的语句修改为“vulualvoidprint()”。(3)题目3要求“使得p指定对象obj3”。p为指针变量,obj3为类的对象,将一个指针变量指向另一个变量,只要把被指向的变量的地址赋给指针变量即可。取对象obj3地址的语句为&obj3,所以这里补全“p=&obj3;”。(4)题目4要求“利用p调用print()函数”。C++中用”—>”运算符实现成员访问,因此调用print()函数,应将第4个标识下修改为“p—>print(),”。国家二级(C++)机试模拟试卷第3套一、选择题(本题共37题,每题1.0分,共37分。)1、在一棵--X树上,第5层的结点数最多是()。A、8B、9C、15D、16标准答案:D知识点解析:根据二叉树的性质:二叉树第i(i>1)层上至多有21-1个结点。得到第5层的结点数最多是16个。2、如果有以下定义及初始化:inta=3,*p=&a:则由此可以推断,*p的值是()。A、变量a的值,即3B、变量a的地址值C、变量P的地址值D、无意义标准答案:A知识点解析:此题考查的是指针变量的定义与赋初值。语句*p=&a是定义指针并且给指针赋初值,指向a,所以指针的值就是变量a的地址,*p的值就是a的值。3、下列叙述中正确的是()。A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D、循环队列中元素的个数是由队头指针和队尾指针共同决定标准答案:D知识点解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中需要队头指针与队尾指针来共同反映队列中元素的动态变化情况,所以B与C错误。4、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<“A”;}~A(){coat<<“~A”;}};classB:publicA{A*p;public:B(){cout<<"B";p=newA;}~B(){cout<A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A标准答案:B知识点解析:此题考查的是类的构造函数和析构函数。派生类构造函数的执行顺序为:首先调用基类的构造函数,调用顺序按它们被继承时说明的顺序;然后调用子对象的构造函数,调用顺序按它们在类中说明的顺序;最后是派生类构造函数中的内容。因此本题中,首先调用基类构造函数输出A,然后调用子对象的构造函数输出B,p=newA再调用类A的构造函数输出A;析构函数的调用顺序和构造函数的调用顺序相反。5、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i://*p=&r;//④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。6、在类中说明的成员可以使用关键字的是()。A、publicB、extemC、cpuD、register标准答案:A知识点解析:extern用于声明外部变量的,register声明寄存器类型变量,无cpu类型。它们都不能声明类成员。public声明为公有访问权限。7、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){cout<<’A’;}MyClass(charc){cout<A、ABXB、ABXBC、AXBD、AXBB标准答案:D知识点解析:构造函数和析构函数的调用顺序为先构造的后析构,后构造的先析构。所以本题答案为D。8、下列关于C++流的描述中,错误的是()。A、cout>>′A′表达式可输出字符AB、eof()函数可以检测是否到达文件尾C、对磁盘文件进行流操作时,必须包含头文件fstreamD、以ios_base::out模式打开的文件不存在时,将自动建立一个新文件标准答案:A知识点解析:本题考查C++流,想要输出字符"A",则应该是cout<<"A",所以本题答案为A。9、以下程序运行后的输出结果是()。#includevoidmain(){chara[]=“abbcabbcabbc”;inti=0j=0,k=0;while(a[i]){if(a[i]D=’a’)j++;if(a[i]=’b’)k++:i++:}cout<A、2,6B、3,5C、4,7D、3,6标准答案:D知识点解析:程序中首先定义字符数组a,然后在while循环中统计字符a和b的个数。其中i记录a的个数,k记录b的个数。第一个if语句是当第i个字符为a时,i加1;第二个if语句是当第i个字符为b时,k加1。10、有如下程序:#includeusingnamespacestd;classTestClassl{public:TestClass10{cout<<”TestClass1”;)-TestClassl0{tout<<”~TestClassl”;));classTestClass2:publicTestClassl{TestClassl*p;puA、TestClass2TestClass1TestClassl~TestClassl~TestClass2~TestClass1B、TestClasslTestClass2TestClassl~TestClass2~TestClassl~TestClasslC、TestClass2TestClasslTestClassl~TestClass2~TestClassl~TestClass1D、TestClass1TestClass2TestClasl-~TestClass1~TestClass2~TestClassl标准答案:B知识点解析:派生类中构造函数的执行顺序是:先调用基类构造函数,对基类数据成员初始化,然后调用子对象构造函数,对子对象数据成员初始化;最后执行派生类构造函数本身,对派生类数据成员初始化。由主函数main入手,首先定义了一个TestClass2对象obi。其中TestClass2公共继承TestClassl,对象obi可以访问TestClassl中的公有成员函数。TestClass2中定义了一个TestClassl的指针p,给p分配新空间,即指向类TestClassl,输出“T5estClassl”。在TestClass2的构造函数中首先输出“TestClass2”,并在’TestClassl构造函数中输出“TestClassl”。TestClass2析构函数中输出“~TestClass2”,删除指针p,输出“~TestClassl”。析构。TestClassl输出“~TestClassl”。11、有如下类和对象的定义: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<<constants.getPI();和cout<<Constants::getPI();标准答案:D知识点解析:本题考查静态成员函数。静态成员函数由于没有this指针,所以不能访问本类中的非静态成员。引用静态成员函数有2种方式,一种是直接使用类来引用,即Constants::getPI();另一种是使用对象来引用,即constants.getPI()。所以本题答案为D。12、有如下程序:#includeusingnamespacestd;classGA{public:virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){cout<A、1l11B、1211C、l112D、1212标准答案:C知识点解析:本题主要考察虚函数。虚函数指在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,执行show(a)、display(a),输出11,定义了类GB的对象b,执行show(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所以本题答案为C。13、负责数据库中查询操作的数据库语言是()。A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。14、下列叙述中正确的是()。A、算法的时间复杂度与算法程序中的语句条数成正比B、算法的时间复杂度与计算机的运行速度有关C、算法的时间复杂度与运行算法时特定的输入有关D、算法的时间复杂度与算法

温馨提示

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

评论

0/150

提交评论