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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷12(共9套)(共226题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共24题,每题1.0分,共24分。)1、数据的存储结构是指()。A、存储在外存中的数据B、数据所占的存储空间量C、数据在计算机中的顺序存储方式D、数据的逻辑结构在计算机中的表示标准答案:D知识点解析:在对数据进行处理时,各数据元素在计算机中的存储关系,即为数据的存储结构。2、按照“后进先出”原则组织数据的数据结构是()。A、队列B、栈C、双向链表D、二叉树标准答案:B知识点解析:栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,也是最先被删除的元素:栈底元素总是最先被插入的元素,也是最后才能被删除的元素。即栈是按照“后进先出”(LastInFirstOut,简称LIFO)或“先进后出”(FirstInLastOut,简称FILO)的原则组织数据的。因此,栈也称为“后进先出表”或“先进后出”表。3、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,一88,0和0,则下列定义语句中错误的是()。A、intvect[]={30,50,一88);B、intvect[]={30,50,一88,0,O};C、intvect[5]={30,50,一88)D、intvect[5]={30,50,一88,0,0};标准答案:A知识点解析:此题考查的是一维数组定义时的初始化。当数组声明时没有给出数组的人小但是有初始化列表时,数组的大小就由列表中元素的个数来确定。所以选项A中数组只定义3个元素,不符合题F1。4、下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象设计方法的主要特征有封装性、继承性和多态性。而结构化程序设计方法的主要原则有自顶向下,逐步求精,模块化,限制使用goto语句。5、下列叙述中错误的是A、向量是线性结构B、非空线性结构中只有一个结点没有前件C、非空线性结构中只有一个结点没有后件D、只有一个根结点和一个叶子结点的结构必定是线性结构标准答案:D知识点解析:线性结构是n个数据元素的有序(次序)集合。①集合中必存在唯一的一个“第一个元素”;②集合中必存在唯一的一个“最后的元素”;③除最后元素之外,其它数据元素均有唯一的“后件”;④除第一元素之外,其它数据元素均有唯一的“前件”。相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继。向量符合线性结构特点。非线性结构也会存在只有一个根结点和叶子结点的情况。6、若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。7、有如下程序:#include<iostream>usingnamespacestd;classXX{protected:intk;public:XX(intn=5):k(n){};~XX(){cout<<’’XX’’;}virtualvoidf()const=0;};inlinevoidXX::f()const{cout<<k+3;};classYY:publicXX{public:~YY(){cout<<’’YY’’;}voidf()const{cout<<k-3;XX::f();}};intmain(){XX&p=*newYY:p.f();delete&p;return0;}执行上面的程序将输出()。A、28XXB、28YYXXC、33XXD、-33XXYY标准答案:A知识点解析:类YY公有派生于类:XX,派生类对象可以替代基类对象向基类对象的引用进行赋值初始化,XX&p=*newYY语句定义了XX对象p引用,并用YY对象初始化,p并不是YY对象的别名,是XX基类对象的别名,故先调用基类XX的构造函数将k初始化为5,p.f()首先输出k-3即2,然后调用XX::f()输出k+3即8,delete&p删除p,调用XX的析构函数输出“XX”。8、必须用一对大括号括起来的程序段是()。A、switch语句中的case标号语句B、if语句的分支C、循环语句的循环体D、函数的函数体标准答案:D知识点解析:此题考查的是语句块和函数。if语句的分支和循环语句的循环体可以是一条语句也可以使一个语句块,所以不是必须用一个大括号括起来:switch语句中的case标号语句可以是一系列语句,也可以包含语句块,也不是必须用一对大括号括起来;函数的函数体必须用一对大括号括起来。9、有如下类定义: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知识点解析:根据派生类构造函数的一般格式:<派生类名>(<总参数表>):<基类名l>(<参数表1>).…<基类名n>(<参数表n>),<成员对象名1>(<参数表n+1>),…<成员对象名m>(<参数表n+m>)<派生类构造函数体>。在派生类BB的构造函数总参数表后面应该接上基类名AA和其参数。10、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfunction2(intn);voidfunctionl(intn){if(n<=0)return;function2(n—2);)voidfunction2(intn){if(n<=0)return;functionl(n—1);}intmain(){functionl(5);return0;}下列关于程序运行情况的描述中,正确的是()。A、function1运行1次,function2运行2次B、function1运行2次,function2运行1次C、function1运行2次,function2运行3次D、function1运行2次,function2运行2次标准答案:D知识点解析:在主函数中执行functionl(5)时,会调用function2(3),function2(3)又会调用functionl(2),functionl(2)又会调用function2(0),到此相互调用结束。所以funaion1()和function2()各执行了2次。11、在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。A、operator+有两个参数,operator*有两个参数B、operator+有两个参数,operator*有一个参数C、operator+有一个参数,operator*有两个参数D、operator+有一个参数,operator*有一个参数标准答案:C知识点解析:此题考查的是运算符的重载。运算符可重载成员函数,也可重载为友元函数。当重载为成员函数时,运算符重载函数的形参个数要比运算符操作数的个数少一个;当重载为友元函数时,其参数个数应与操作数的个数相同。12、已知函数fun的原型为intfun(int,int,int);下列重载函数原型中错误的是()。A、charfun(int,int);B、doublefun(int,int,double);C、intfun(int,char*);D、floatfun(int,int,int);标准答案:D知识点解析:重载函数至少要在参数个数或参数类型上不同。而选项D中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。13、有如下程序:#include<iostream>usingnamespacestd;classXA{inta;public:staticintb:XA(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA::b=0;intmain(){XAdl(2),d2(3);cout<<d1.get()+d2.get()+XA::b<<end1;return0;}运行时的输出结果是()。A、5B、6C、7D、8标准答案:C知识点解析:执行XA类的实例变量d1(2)时,成员函数d1.get()的返回值等于2,XA.b的值等于1,执行XA类的实例变量d2(3)时,成员函数d1.get()的返回值等于3,XA.b的值等于2,所以输出结果为2+3+2=7。14、有如下程序#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3:Funfun1;constFunfun2;return;}若程序的输出结果是:123则程序中下划线处遗漏的语句是()。A、cout<<fun1.value()<<Fun::i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<<fun2.value()<<Fun::i;D、cout<<fun2.value()<<Fun::i<<fun1.value();标准答案:A知识点解析:此题考查的是常成员函数。const关键字可以用于参与重载函数的区分,此时常对象调用常成员函数,一般对象调用一般成员函数。当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。本题中,通过funl调用value()函数时,是调用前一个,而通过fun2调用value()函数是调用后一个:另外,value()函数中,访问的i是类中定义的数据成员i,全局变量i在类中被“屏蔽”。fun1.value()输出i-1=2-1=1;fun2.value()调用后一个value()函数输出i+1=2+1=3;Fun::i是通过类名直接访问类的静态数据成员i的值,即2;所以正确的输出顺序是A选项。15、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:此题考查的是函数重载的概念。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项c错误。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、若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为()。A、AA.getA()B、x.getA()C、x.AD、AA::a标准答案:B知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数getA()。18、有如下程序:#inc1ude<iostream>usingnamespacestd;classXX{intX;public:XX(intxx=0):x(xx){}intgetX(){returnx;}};classYY:publicXX{inty;public:YY(intxx,intyy):XX(xx),y(yy){}intgetV(){returngetX()+y;}};intmain(){YYc(3,4);cout<<c.getV()+c.getX0<<endl;return0;}运行这个程序的输出结果是()。A、3B、4C、7D、10标准答案:D知识点解析:由于类YY公开继承自类XX,所以执行表达式c.getV()+c.getX()的值等于3+3+4一10。19、有如下程序:#includeusingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<’?’;}Name(char*fame){strcpy(name,fname);cout<<’?’;}};intmain(){Namenames[3]={Name("张三"),Name("李四")};return0:}运行此程序输出符号?的个数是()。A、0B、1C、2D、3标准答案:D知识点解析:类Name有两个构造函数,在默认构造函数中,给字符数组name赋空值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,name[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出三个“?”符号。20、有如下程序:#includeusingnamespacestd;classobj{staticinti;public:obj(){i++;}~obj(){i--;)staticintgetVal(){returni;}};intobj::i=0;voidf(){objob2;cout<getVal();deleteob3;cout<A、232B、231C、222D、221标准答案:D知识点解析:此题考查的是静态成员。本题中,obj类定义了一个静态数据成员i,并初始化为0.在主函数中,首先定义了1个该类对象obj,所以构造函数被调用1次,i加1;然后调用函数f(),该函数中义定义了一个对象ob2,此时i再次加1变为2,然后通过函数getVal()输出j的值2。f()函数结束,ob2变量被释放,故析构函数被调用了1次,i变成1:回到主函数中,又动态创建了1个对象并让:ob3指向它,此后i变成2并输出。最后释放动态创建的对象i变为1,输出1。故最终的输出结果是221。21、下列关于函数模板的描述中,正确的是()。A、函数模板是一个实例函数B、使用函数模板定义的函数没有返回类型C、函数模板的类型参数与函数的参数相同D、通过使用不同的类型参数,可以从函数模板得到不同的实例函数标准答案:D知识点解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。22、有如下4个语句:①cout<<’A’<<setfill(’*’)<<left<<setw(7)<<’B’<<endl;②cout<<setfill(’*’)<<left<<setw(7)<<’A’<<’B’<<endl;③cout<<’A’<<serfill(’*’)<<right<<setw(7)<<’B’<<endl;④cout<<setfill(’*’)<<right<<setw(7)<<’A’<<’B’<<endl;其中能显示A******B的是()。A、①和③B、①和④C、②和③D、②和④标准答案:C知识点解析:此题考查C++流的使用。setfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐:fight是使输出数据在指定宽度内右对齐。23、下列关于类模板的描述中,错误的是()。A、类模板的成员函数都是模板函数B、可以为类模板参数设置默认值C、类模板描述了一组类D、类模板中只允许有一个类型参数标准答案:D知识点解析:类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数的参数和返回值的类型)。一个类模板的格式是:template<<模板形参表声明>><类声明>,<模板形参表声明>是由一个或多个模板形参组成。在定义类模板时,可以为模板形参表声明的最后若干个参数设置默认值。24、有如下4个语句:①cout<<’A’<<setfill(’*’)<<left<<setw(7)<<’B’<<endl;②cout<<setfill(’*’)<<left<<setw(7)<<’A’<<’B’<<endl;③cout<<’A’<<serfill(’*’)<<right<<setw(7)<<’B’<<endl;④cout<<setfill(’*’)<<right<<setw(7)<<’A’<<’B’<<endl;其中能显示A******B的是()。A、①和③B、①和④C、②和③D、②和④标准答案:C知识点解析:此题考查C++流的使用。setfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐:fight是使输出数据在指定宽度内右对齐。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共23题,每题1.0分,共23分。)1、下列叙述中正确的是()。A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:所谓算法是指解题方案的准确而完整的描述。是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。算法不等于程序,也不等于计算方法。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2、以下程序的输出的结果是()。#include<iostream.h>voidmain(){inta,b,c,d(5);c=2,c+=10;a=b=10;a*=2;b/=2;c%=2;cout<<a<<’’,’’<<b<<’’,’<<c<<end1;}A、20,5,0B、20,7,0C、20,5,1D、5,20,0标准答案:A知识点解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0,所以输出值20,5,0。3、下列叙述中正确的是A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:本题主要考查了栈、队列、循环队列的概念,栈是先进后出的线性表,队列是先进先出的线性表。根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。4、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。5、某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为A、n+1B、n一1C、2nD、n/2标准答案:A知识点解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以该二叉树的叶子结点数等于n+1。6、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。7、下列选项中不属于面向对象程序设计特征的是()。A、继承性B、多态性C、类比性D、封装性标准答案:C知识点解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。8、关于模板,下列说法不正确的是()。A、用类模板定义一个对象时,不能省略实参B、类模板只能有虚拟类型参数C、类模板本身在编译中不会生成任何代码D、类模板的成员函数都是模板函数标准答案:B知识点解析:类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。C++中可以为类模板的参数设置默认值,所以选项B)错误。9、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、差C、交D、并标准答案:B知识点解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。10、有如下程序.#includeusingnamespacestd;classA{public:virtualvoidfuncl(){cout<<“A1”;)voidfunc2(){cout<<“A2”;)};classB:publicA{public:voidfuncl(){cout<<“B1”;)voidfunc2(){cout<<“B2”;)};intmain(){A*p=newB;p->funcl();P一>func2();return0:)运行此程序,屏幕上将显示输出()。A、B182B、A1A2C、B1A2D、A182标准答案:C知识点解析:此题考查的是虚函数的概念。此题中,funcl是虚函数,fhnc2是一般成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句A*p=newB;定义了一个基类的指针p,并让它指向一个派生类对象。所以通过该指针调用funcl时,运行的是派生类的版本,而通过该指针调用func2运行的是基类的版本。所以程序运行的最后输出是:BlA2。11、有如下程序:#inc1ude<iostream>usingnamespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}运行这个程序的输出结果是()。A、22B、23C、24D、25标准答案:B知识点解析:在函数fl(irit&x){XH,)中,是对变量x的引用,所以当在maln函数中执行“n(x);”语句后,变量x的值等于11,而在函数voidf2(intx){++x;)中,对变量x的传递调用,在main函数中执行“f2(y);”语句后,变量y的值仍然等于12,所以输出x+y的值等于23。12、下面是一个模板声明的开始部分:templute<typenarneT>double__由此可知()。A、这可能是一个函数模板的声明B、这可能是一个类模板的声明C、这既可能是一个函数模板的声明,也可能是一个类模板的声明D、这肯定是一个错误的模板声明标准答案:A知识点解析:此题考查的是函数模板的声明。声明一个函数模板的格式是:template<模板形参表声明>函数声明;定义类模板的格式是:template<类型形参表>class<类模板名>{};。13、有如下类定义:classMyClass{intx;public:MyClass():x(0),y(0){}intGetX(){returnx;}voidSetX(intxx){x=xx;}inty;};已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是()。A、obj.xB、obj.yC、obj.GetX()D、obj.SetX(0)标准答案:A知识点解析:由类MyClass的定义可知,数据成员x属于私有成员,所以只能在类的内部访问。类MyClass的对象obj不能访问类MyClass的私有成员x。14、下列关于模板形参的描述中,错误的是()。A、模板形参表必须在关键字template之后B、模板形参表必须用括弧()括起来C、可以用class修饰模板形参D、可以用typename修饰模板形参标准答案:B知识点解析:声明一个函数模板的格式是:template<:<模板形参表声明>><函数声明>,其中的<模板形参表声明>是由一个或多个<模板形参>组成(如果是多个,需要用逗号隔开)。每个<模板形参>具有下面的几种形式:①typename<参数表>②class<参数名>③<类型修饰><参数名>由此可知,模板形参表必须用括弧<>括起来,而不是(),所以选项B)为正确答案。15、有如下程序:##inc1ude<iostream>usingnamespacestd;classToy{public:Toy(char*_n){strcpy(name,_n);count++,}~Toy(){count--,}char*GetName(){returnname,}staticintgetCount(){returncount;)private:charname[10];,staticintcount,};intToy::count=0;intmain(){Toytl("Snoopy"),t2("Mickey"),t3("Barbie");cout<<t1.getCount()<<endl;return0;}运行时的输出结果是()。A、1B、2C、3D、运行时出错标准答案:C知识点解析:类Toy中包含一个字符数组name和一个静态整型变量count。在程序中首先给类Toy的成员count的赋初始值0,然后在主函数中,定义了三个Toy对象t1、t2、t3,并分别对它们的name字段赋值,在赋值的同时变量count的值加l,所以最后变量count的值等于3,16、下列有关C++流的叙述中,错误的是()。A、C++操作符setw设置的输出宽度永久有效B、C++操作符endl可以实现输出的回车换行C、处理文件I/O时,要包含头文件fstreamD、进行输入操作时,eofO函数用于检测是否到达文件尾标准答案:A知识点解析:此题考查的是C++流。c++操作符setw(。)的作用是设置输入输出宽度,且只对当前一次有效,并非永久有效,故选项A叙述错误。17、下列关于析构函数的描述中,错误的是()。A、析构函数可以重载B、析构函数由系统自动调用C、每个对象的析构函数只被调用一次D、每个类都有析构函数标准答案:A知识点解析:一般情况下,析构函数在对象的生存周期即将结束的时候由系统自动调用。在调用完成之后,对象也就消失了,相应的内存空间也被释放。析构函数没有参数,因此析构函数不能重载,一个类中只能定义一个析构函数。18、有如下程序#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;return0;}若程序的输出结果是:123则程序中下划线处遗漏的语句是()。A、cout<<fun1.value()<<Fun::i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<D、cout<<fun2.value()<<Fun::i<<fun1.value();标准答案:A知识点解析:此题考查的是常成员函数。const关键字可以用于参与重载函数的区分,此时常对象调用常成员函数,一般对象调用一般成员函数,当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。本题中,通过fun1调用value()函数时,是调用前一个,而通过fun2调用value()函数是调用后一个;另外,value()函数中访问的i是类中定义的数据成员i,全局变量i在类中被“屏蔽”。fun1.value()输出i-1=2-1=1;fun2.value()调用后一个value()函数输出i+1=2+1=3;Fun::i是通过类名直接访问类的静态数据成员i的值,即2;所以正确的输出顺序是A选项。19、有如下类定义:classMyClass{Intvalue;public;MyClass(intn):value(n){}intgerValueoconst{returnvalue;}};则类MyClass的构造函数的个数是()。A、1个B、2个C、3个D、4个标准答案:A知识点解析:此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造函数可以重载;在创建对象时,系统会自动调用构造函数。20、有如下程序:#includeusingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<’?’;}Name(char*fame){strcpy(name,fname);cout<<’?’;}};intmain(){Namenames[3]={Name("张三"),Name("李四")};return0:}运行此程序输出符号?的个数是()。A、0B、1C、2D、3标准答案:D知识点解析:类Name有两个构造函数,在默认构造函数中,给字符数组name赋空值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,name[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出三个“?”符号。21、有如下类声明: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知识点解析:此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式为:派生类名(构造函数形参表)基类构造函数(形参表)。22、使用输入输出操作符setw,可以控制()。A、输出精度B、输出宽度C、对齐方式D、填充字符标准答案:B知识点解析:此题考查的是C++流的操作符。在C++流中,操作符setw的作用是设置输入输出宽度。23、如下函数的作用是以双倍行距输出文件:voiddouble__space(ifstream&f,ofstream&t){charc;while(){;_________if(c==’\n’)t.put(c);}}画线处缺失的部分是()。A、f.get(c)与t.put(c)B、f.put(c)与t.get(c)C、t.get(c)与f.put(c)D、t.put(c)与f.get(c)标准答案:A知识点解析:此题考查的是文件流。get()函数作用是读入一个字符,所以调用它的应该是输入文件流ifstream对象f.put()函数作用是输出一个字符,所以调用它的应该是输入文件流ofstre锄对象t,故选项B、C排除。读入和输出应该是有顺序的,应该先读入后输出,所以前一空填fget(c),后一空填t.put(c)。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共20题,每题1.0分,共20分。)1、下列有一维数组a的定义中,语法正确的是()。A、inta(10);B、intn=7,a[n];C、intn;cin>>n;inta[n];D、constintsize=l0;inta[size];标准答案:D知识点解析:定义一维数组的一股格式为:类型标识符数组名[常量表达式];常量表达式的值表示元素的个数,即数组长度。常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。也就是说,c++不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。2、下列程序的输出结果为2,横线处应添加语句()。#include<iostream>usingnamespacestd;classTestClass1{public:voidfun(){cout<<1;}};classTestClass2:publicTestClass1{public:voidfun(){cout<<2;}};intmain(){TestClass1*p=newTestClass2;p->fun();deletep;return0:}A、publicB、privateC、virtualD、protected标准答案:C知识点解析:由主函数main入手,定义TestClass1类的指针对象p指向派生类TestClass2。因为基类和派生类中都有fun函数,题目要求输出为2,就是基类对象访问派生类中fun函数。通过虚函数与指向基类对象的指针变量的配合使用,就能方便调用同名函数。所以这里将基类中的:fun函数声明为virtual。并且当一个成员函数被声明为虚函数后,其派生类中的同名函数自动成为虚函数。3、结构化程序设计中,下面对goto语句使用描述正确的是()。A、禁止使用goto语句B、使用goto语句程序效率高C、应避免滥用goto语句D、goto语句确实一无是处标准答案:C知识点解析:滥用goto语句确实有害,应尽量避免;完全避免使用goto语句并非是明智的方法,有些地方使用goto语句会使程序流程更清楚、效率更高;争论的焦点不应该放在是否取消goto语句,而应该放在用在什么程序结构上。4、下列选项中不属于面向对象程序设计特征的是()。A、继承性B、多态性C、类比性D、封装性标准答案:C知识点解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。5、软件生命周期中的活动不包括()。A、市场调研B、需求分析C、软件测试D、软件维护标准答案:A知识点解析:软件的生命周期描述了软件从产生到最终消亡的全过程,生命周期中的活动包括需求分析、软件设计(分为概要设计和详细设计)、软件实现、软件测试和软件维护,不包括市场调研。6、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:此题考查的是函数重载的概念。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项C错误。7、有如下类定义:classMyClass{Intvalue;public;MyClass(intn):value(n){}intgerValue()const{returnvalue;}};则类MyClass的构造函数的个数是()。A、1个B、2个C、3个D、4个标准答案:A知识点解析:此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造函数可以重载;在创建对象时,系统会自动调用构造函数。8、在关系模型中,每一个二维表称为一个()。A、关系B、属性C、元组D、主码(键)标准答案:A知识点解析:每个二维表代表一个关系,由表框架及表的元组组成。9、在满足实体完整性约束的条件下()。A、一个关系中应该有一个或多个候选关键字B、一个关系中只能有一个候选关键字C、一个关系中必须有多个候选关键字D、一个关系中可以没有候选关键字标准答案:A知识点解析:在关系数据库中,实体完整性的概念是主属性不能为空。在满足实体完整性的前提下,必须在关系中存在主属性,也就是在关系中应该有候选关键字。一个关系中可以有一个或者多个候选关键字。10、下列选项中,正确的C++标识符是()。A、6_groupB>group~6B、age+3C、_group_6标准答案:D知识点解析:C++中标识符的命名遵循如下规则:不能是C++关键字,第一个字母必须是字母或下划线,中间不能有空格,变量名中不能包括“,”、“;”、“,”、“’”、“””+—之类的特殊符号。总之标识符中除了能使用26个英文大小写字母和数字外,只能使用下划线“”。11、()提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。A、公有成员B、私有成员C、私有成员函数D、保护成员标准答案:A知识点解析:此题考查的是公有成员的特点。公有成员允许可使用者访问,提供了类对外部的接口。12、派生类的对象对它的基类成员中()是可以访问的。A、公有继承的公有成员B、公有继承的私有成员C、公有继承的保护成员D、私有继承的公有成员标准答案:A知识点解析:只要是派生类,都可以丛基类中继承,除非把基类的构造函数定义为私有的,这样派生类无法构造。13、有如下程序.#includeusingnamespacestd;classA{public:virtualvoidfuncl(){cout<<“A1”;)voidfunc2(){cout<<“A2”;)};classB:publicA{public:voidfuncl(){cout<<“B1”;)voidfunc2(){cout<<“B2”;)};intmain(){A*p=newB;p->funcl();P一>func2();return0:)运行此程序,屏幕上将显示输出()。A、B182B、A1A2C、B1A2D、A182标准答案:C知识点解析:此题考查的是虚函数的概念。此题中,funcl是虚函数,fhnc2是一般成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句A*p=newB;定义了一个基类的指针p,并让它指向一个派生类对象。所以通过该指针调用funcl时,运行的是派生类的版本,而通过该指针调用func2运行的是基类的版本。所以程序运行的最后输出是:BlA2。14、计算斐波那契数列第n项的函数定义如下:intfib(intn){if(n==0)return1;elseif(n==1)return2;elsereturnfib(n-1)+fib(n-2);}若执行函数调用表达式fib(2),函数fib被调用的次数是()。A、1B、2C、3D、4标准答案:B知识点解析:斐波那契数列是递归函数,所以fib(2)=fib(1)+fib(0)=2+1=3。因而执行函数调用表达式fib(2)时,函数fib被调用的次是2次。15、有如下程序:#include<iostream>usingnamespacestd;intmain(){intf,f1=0(),t2=1;for(inti=3;i<=6;i++){f=f1+f2;f1=f2;f2=f;}cout<<f<<end1;return0;}运行时的输出结果是()。A、2B、3C、5D、8标准答案:C知识点解析:在主函数中for循环语句执行4次,第一次循环结束时,变量f的值等于1,n的值等于1,f2的值等于1;第二次循环结束时,变量f的值等于2,f1的值等于1,f2的值等于2:第三次循环结束时,变量f的值等于3,f1的值等于2,f2的值等于3;第四次循环结束时,变量f的值等于5,f1的值等于3,f2的值等于5;结束循环。16、有如下程序:#inc1ude<iostream>#inc1ude<cstring>usingnamespacestd;classXCF{inta;public:XCF(intaa=0):a(aa){cout<<"1";}XCF(XCF&x){a=x.a;cout<"2";}~XCF(){cout<<a;}intGeta(){returna;}};intmain(){XCFdl(5),d2(dl);XCF*pd=newXCF(8);cout<<pd一>Geta();deletepd;return0:}运行时的输出结果是()。A、1215588B、1218855C、12185D、128512标准答案:B知识点解析:在这个程序中在建立对象d1(5)时,调用构造函数XCF(intaa=0):a(aa){cout<<”1”;},输出1;在建立d2(dl)时,调用拷贝构造函数XCF(XCF&x){a=x.a,cout<<”2”;},输出2:在建立newXCF(8)对象时,调用构造函数XCF(intaa=0):a(aa){cout<<”1”;),输出1;语句cout<<pd一>Geta()的功能是输出8;语句deletepd;调用析构函数~XCF(),输出8;当退出程序时,分别释放对象d2、dl,输出55。17、已知函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是()。A、voidprint()const;B、constvoidprint();C、voidconstprint();D、voidprint(const);标准答案:A知识点解析:const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。18、下列选项中,与实现运行时多态性无关的是()。A、重载函数B、虚函数C、指针D、引用标准答案:A知识点解析:在C++中,多态性可以分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模版体现的,运行时的多态性是通过虚函数体现的。19、下列选项中,与实现运行时多态性无关的是()。A、重载函数B、虚函数C、指针D、引用标准答案:A知识点解析:在C++中,多态性可以分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模版体现的,运行时的多态性是通过虚函数体现的。20、有如下程序:#inc1ude<iostream>#inc1ude<iomanip>usingnamespacestd;intmain(){ints[]={123,234};cout<<right<<setfill(’*’)<<setw(6);for(intl=0;1<2;1++){cout<<s[i]<<end1;}return0:}运行时的输出结果是()。A、123234B、***123234C、***123***234D、***123234***标准答案:B知识点解析:在输出语句中定义了输出的格式是字符宽度为6,并且向右对齐,不足的位用‘—’补齐。在C++中,输出格式的设置只对第一次输出有效,在完成了一个数据的输出后,宽度殴置自动恢复为0(表示按数据实际宽度输出)。所以对于本题来说,在循环语句中输出数组s[0]中的元素时,按照规定的格式输出,其结果为¨—123,当输出s[1]时,输出格式已经恢复到按数据实际宽度输出,所以此时输出为234。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共32题,每题1.0分,共32分。)1、下列数据结构中,属于非线性结构的是()。A、循环队列B、带链队列C、二叉树D、带链栈标准答案:C知识点解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。2、支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈是一种限定在一端进行插入与删除的线性表。在主函数调用子函数时,要首先保存主函数当前的状态,然后转去执行子函数,把子函数的运行结果返回到主函数调用子函数时的位置,主函数再接着往下执行,这种过程符合栈的特点。所以一般采用栈式存储方式。3、下列关于类和对象的叙述中,错误的是()。A、一个类只能有一个对象B、对象是类的具体实例C、类是对某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系标准答案:A知识点解析:此题考查的是类和对象的相关概念。类是将不同的数据和与这些数据相关的操作封装起来装在一起的集合体。对象是类的具体实例,也即类是对某一类对象的抽象,类和对象之间可以说是数据类型与变量的关系。一个类可以有无数个对象。4、下列关于线性链表的叙述中,正确的是A、各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B、各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C、进行插入与删除时,不需要移动表中的元素D、以上都不正确标准答案:C知识点解析:线性表的链式存储结构称为线性链表。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。5、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是()。A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的性质,在任意二叉树中,度为O的结点(即叶子结点)总是比度为2的结点多一个。6、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval):doubleval;function(val);cout<A、编译出错,无法运行B、输出:3C、输出:3.0D、输出一个不确定的数标准答案:D知识点解析:本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选项正确。7、有如下程序:#includeusingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){retumi一1;}intvalue()const{retumi+1;}};intFun::i=2;intmain(){inti=3;Funfunl;constFunfun2;retum0;}若程序的输出结果是:123则程序中下画线处遗漏的语句是()。A、cout<B、cout<C、cout<D、cout<标准答案:A知识点解析:本题考查构造函数、常成员函数和静态数据成员。外部同名的变量赋值,不能改变类的静态变量值,所以Fun对象里的i值为2,所以本题答案为A。8、关于关键字class和typename,下列表述中正确的是()。A、程序中的typename都可以替换为classB、程序中的class都可以替换为typellameC、在模板形参表中只能用typename来声明参数的类型D、在模板形参表中只能用class或typename来声明参数的类型标准答案:A知识点解析:程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。9、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、编译程序B、操作系统C、教务管理系统D、汇编程序标准答案:C知识点解析:编译软件、操作系统、汇编程序都属于系统软件,只有c教务管理系统才是应用软件。10、关于模板,下列说法不正确的是()。A、用类模板定义一个对象时,不能省略实参B、类模板只能有虚拟类型参数C、类模板本身在编译中不会生成任何代码D、类模板的成员函数都是模板函数标准答案:B知识点解析:类模板不是一个实实在在的类,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。C++中可以为类模板的参数设置默认值,所以选项B)错误。11、在软件开发中,需求分析阶段产生的主要文档是()。A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:在软件开发过程中,需求分析阶段产生的主要文档是软件需求规格说明书。12、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度标准答案:B知识点解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于模块的独立性。13、若从为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为()。A、aB、AA.aC、a{)D、AA∷a{}标准答案:A知识点解析:类从的成员函数直接引用类从的非静态数据成员。14、有如下程序:#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;______________return0;}若程序的输出结果是:123则程序中横线处的语句是()。A、cout<<fun1.value()<<Fun::i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value0<<fun2.value()<<Fun::i;D、cout<<fun2.Value()<<Fun::i<<fun1.value();标准答案:A知识点解析:此题因为定义的变量i是static类型的(main()函数内部的i只是一个局部变量),所以,选项A)中fun1.value()的返回值是1,.Fun::i引用的是外部变量会输出2;fun2.value();会调用常成员函数intvalue()const{retuni+1;}使得外部静态变量i的值增加为3,故输出3。15、有如下程序:#includeusingnamespacestd;classToy{public:Toy(char*一n){strcpy(name,一n);count++;)~Toy0{count一;)char*GetName0{returnname;}staticintgetCount0{returncount;)private:charname[10];staticintcount;);intToy::count=0;intmain(){Toytl(”Snoopy”),t2(”Mickey”),t3(”Barbie”);cout<<t1.getCount()<<endl;returnO:)运行时的输出结果是()。A、1B、2C、3D、运行时出错标准答案:C知识点解析:类Toy中包含一个字符数组name和一个静态整型变量count。在程序中首先给类Toy的成员count的赋初始值0,然后在主函数中,定义了三个Toy对象t1、t2、t3,并分别对它们的name字段赋值,在赋值的同时变量count的值加l,所以最后变量count的值等于3。16、下面描述中不属于数据库系统特点的是()。A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据系统的基本特点有数据的集成性、数据的高共享性与低冗余性、数据的独立性、数据统一管理与控制。17、在满足实体完整性约束的条件下()。A、一个关系中应该有一个或多个候选关键字B、一个关系中只能有一个候选关键字C、一个关系中必须有多个候选关键字D、一个关系中可以没有候选关键字标准答案:A知识点解析:在关系数据库中,实体完整性的概念是主属性不能为空。在满足实体完整性的前提下,必须在关系中存在主属性,也就是在关系中应该有候选关键字。一个关系中可以有一个或者多个候选关键字。18、下列字符串中不能作为C++标识符使用的是()。A、WHILEB、userC、_lvarD、9stars标准答案:D知识点解析:在C++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者F划线。19、己知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列叙述中错误的是()。A、枚举常量NAME的值为1B、枚举常量NUMBER的值为1C、枚举常量MINUS的值为6D、枚举常量PRINT的值为10标准答案:A知识点解析:此题考查的是C++语言的数据类型。第一个枚举常量的值为0;允许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举常量值的基础上以此增1。20、若x和y是程序中的两个整型变量,则下列if语句中正确的是()。A、if(x==0)y=1;elsey=2;B、if(x=0)theny=lelsey=2;C、if(x=0)y=1elsey=2;D、if(x==0)y=1;elsey=2;标准答案:A知识点解析:ifelse语句的形式为:if(<条件>)<语句1>else<语句2>所符合以上形式的ifelse语句为选项A)。21、有如下两个类定义classxx{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;potected:doubley2;public:doubley3;};在类YY中保护成员变量的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:在C++中派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。所以对于本题来说,YY类保护继承自类XX,那么类XX中的公有成员x3和保护成员x2在派生类中都成为保护成员,再加上类YY中的保护成员y2,因此在派生类YY中保护成员的个数为3。22、关于函数中的<返回类型>,下列表述中错误的是()。A、<返回类型>中有可能包含关键字intB、<返回类型>中有可能包含自定义标识符C、<返回类型>中有可能包含字符牛D、<返回类型>中可能包含[]标准答案:D知识点解析:<返回类型>又称为函数类型,表示一个函数所计算(或运行)的结果值的类型.它可以是C++中已定义的数据类型,也可能是用户自定义的数据类型,但是不能包含[],因为符号[]不是一个数据类型。23、有如下程序:#include<iostream>usingnamespacestd;voidf1(intax,int&y){intz=x;x=y;y=z;}voidf2(intx,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<<end1;return0;}运行时的输出结果是()。A、10B、16C、26D、36标准答案:A知识点解析:子函数f1中的形参是引用变量,所以执行子函数实现了变量x,y值的交换,变量x的值等于26,而变量y的值等于10。而子函数f2中的形参是普通变量,因为C++的函数之间的参数传递是传值,所以执行函数f2不能实现变量x,y值的交换。24、下列语句中,错误的是()。A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、eonstdouble*rt=-newdouble(5.5);标准答案:B知识点解析:此题考查的是符号常量的概念。符号常量必须在声明的同时赋初值,故选项B错误;选项C定义的是一个指向常量的指针变量,即通过指针不能改变它所指向的内容,而它自己的内容是可以改变的,C选项正确。25、有如下程序:#inc1ude<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}~Test(){n.=3;}staticintgetNum(){returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<"n="<<Test::getNum()<<endl;return0;}执行后的输出结果是()。A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员n的运算具有叠加性,执行“n+=2”和“n一=3”后n的值为0。26、有如下程序:#includeusingnamespacestd;classSample{friendlongfun(Samples);public:Sample(longa){x=a;}private:longx;};longfun(SampleS){if(s.x<2)return1:returns.x*fun(Sample(s.x-1)):}intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));}cout<A、120B、16C、154D、34标准答案:C知识点解析:此题考查的是友元函数和递归函数。因为fun函数是Sample类的友元函数,所以fun函数可以直接访问Sample类对象的私有成员x。主函数调用fun函数,构造参数为0~5。当n小于2时,fun函数返回1,其余返回值为n*fun(n-1)。n取0~5的值时fun(n)依次为1,1,2,6,24,120,累加结果为154。27、有如下类定义和变量定义:classParents{public:intpublicData;private:intprivateData;};classChildA:publicParents{/*类体略*/};classChildB:privateParents{/*类体略*/};ChildAa;ChildBb;下列语句中正确的是()。A、cout<B、cout<C、cout<D、cout<标准答案:A知识点解析:基类Parents的私有成员privateData在派生类ChildA和ChildB中是不可以访问,所以选项B、D是错误,而派生类ChildB私有继承基类Parents,所以基类Parents的公有成员publicData在派生类ChildB中变为私有成员,只能在派生类ChildB内部访问,因而选项C是错误的。派生类ChildA公有继承基类Parents,所以基类Parents的公有成员publicData在派生类ChildA中可以访问。28、有如下类定义:classPoint{intx_,y_;public:Point():x_(0),y_(0){}Point(intx,inty=0):x_(x),y_(y){}};若执行语句Pointa(2)b[3],*c[4];则Point类的构造函数被调用的次数是()。A、2次B、3次C、4次D、5次标准答案:C知识点解析:此题考查的是类的构造函数。构造函数在对象创建的时候由系统自动调用。在Pointa(2),b[3],*c[4]语句中:a(2)是定义一个对象并传入构造函数2,所以此时会调用以此构造函数;b[3]是定义一个包含3个对象的数组,所以构造函数会被调用3次;*c[4]定义的是4个:Point类对象指针的数组,它并没有创建任何Point对象,所以不调用构造函数。29、已知在一个类体中包含如下函数原型:VOLUMEoperator-(VOLUME)const;下列关于这个函数的叙述中,错误的是()。A、这是运算符.的重载运算符函数B、这个函数所重载的运算符是一个一元运算符C、这是一个成员函数D、这个函数不改变类的任何数据成员的值标准答案:B知识点解析:此题考查的是运算符的重载。运算符“-”有一元和二元两种,在本题中它作为一个二元运算符,所以它不能更新对象的数据成员,也不能调用该类中没有const修饰的成员函数。30、运算符重载时不需要保持的性质是()。A、操作数个数B、操作数类型C、优先级D、结合性标准答案:B知识点解析:运算符重载应该体现为原有运算符的功能在新的数据类型上的延伸。重载的运算符保持原有运算符的操作个数、优先级和结合性三个最基本的特征。31、在C++中,cin是一个()。A、类B、对象C、模板D、函数标准答案:B知识点解析:cin为istream流类的对象。32、下列关于运算符重载的叙述中,正确的是()。A、通过运算符重载,可以定义新的运算符B、有的运算符只能作为成员函数重载C、若重载运算符+,则相应的运算符函数名是+D、重载一个二元运算符时,必须声明两个形参标准答案:B知识点解析:此题考查的是运算符重载。C++中,“=”、“[]”、“()”、“->”以及所有的类型转换符只能作为成员函数重

温馨提示

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

评论

0/150

提交评论