版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(选择题)模拟试卷33(共9套)(共255题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共24题,每题1.0分,共24分。)1、下列关于栈的叙述正确的是()。A、栈按“先进先出”组织数据B、栈按“先进后出”组织数据C、只能在栈底插入数据D、不能删除数据标准答案:B知识点解析:栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素的一端称为栈顶,另一端称为栈底。栈是按照“先进后出”的原则组织数据的。2、下列叙述中正确的是A、在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B、在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C、在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D、上述三种说法都不对标准答案:C知识点解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈跟队列不同,元素只能在栈项压入或弹出,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,遵循后进先出的规则。3、下列与队列结构有关联的是A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。4、一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为A、16B、10C、6D、4标准答案:A知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故此度为1的结点个数=总结点数-叶子节点数-度为2的节点数=25-5-4=16。5、设树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点数为()。A、8B、7C、6D、5标准答案:B知识点解析:深度为m二叉树其总结点数为2m一1=24—1=15。总结点数减去度为1,2,3,4的结点个数就是叶子结点数。15一4一2一1一1=7。6、下列选项中不属于结构化程序设计方法的是()。A、自顶向下B、逐步求精C、模块化D、可复用标准答案:D知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化,限制使用goto语句。自顶向下是指程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。逐步求精是指对复杂问题应设计一些子目标过渡,逐步细化。模块化是把程序要解决的总目标先分解成分目标,再进一步分解成具体的小目标,把每个小目标称为一个模块。可复用性是指软件元素不加修改成稍加修改便可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法,不属于结构化程序设计方法。7、下列选项中不属于面向对象程序设计特征的是()。A、继承性B、多态性C、类比性D、封装性标准答案:C知识点解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。8、存在定义inta[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不是等价的()?A、x=*pa;B、x=*(a+1);C、x=*(pa+1);D、x=a[1];标准答案:A知识点解析:选项B、C、D都是获取a(1)元素,而选项A是获取a(0)的元素。9、在数据库系统中,用户所见的数据模式为()。A、概念模式B、外模式C、内模式D、物理模式标准答案:B知识点解析:用户所见到的数据模式是外模式也称用户模式。它是用户的数据视图,它由概念模式导出。一个概念模式可以有若干个外模式,每个用户只关心与它有关的外模式,这样不仅可以屏蔽大量无关信息,而且有利于数据维护。10、—个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人员与实体计算机之间的联系是()。A、一对一B、—对多C、多对多D、多对一标准答案:C知识点解析:如果一个工作人员只能使用一台计算机且一台计算机只能被一个工作人员使用,则关系为一对一;如果一个工作人员可以使用多台计算机,但是一台计算机只能被一个工作人员使用,则关系为一对多;如果一个工作人员可以使用多台计算机,一台计算机也可以被多个工作人员使用,则关系为多对多。11、静态数据成员是为()的数据。A、私有B、保护C、所有对象共享D、类成员标准答案:C知识点解析:静态数据成员是一种特殊的数据成员。静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间。所有对象共享这些静态数据成员,都可以引用它。12、有如下语句序列:intx=100,&r=x,count<<x<<’—’<<r<<end1:己知其中变量x的地址为0012FF7C,则执行该语句序列的输出结果为()。A、100—100B、100—0012FF7CC、0012FF7C—100D、0012FF7C—0012FF7C标准答案:A知识点解析:在语句inx=100,&R;中声明r初始化对x的引用,所以x和&r的值都是100。13、下列关于类和对象的叙述中,错误的是()。A、一个类只能有一个对象B、对象是类的具体实例C、类是对某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系标准答案:A知识点解析:此题考查的是类和对象的概念。类是用户定义的…种数据类型,可以使用这个类型来说明一个或多个变量,即对象。14、有如下程序:#includeusingnamespacestd;classPart{public:Part(intx=0):val(x){cout<A、123321B、213312C、213D、123123标准答案:B知识点解析:此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序,最后执行自身的构造函数。析构顺序与之相反。本题中,Whole类中有两个Part类的成员p1和p2,根据它们定义的顺序,先构造p1再构造p2。所以,首先被构造的是p1(y),输出2;第二个被构造的是p2(x),输出1;最后调用析构函数,输出val的值3;析构函数调用顺序与构造函数相反。故最后输出213312。15、有如下4个语句:①cout<<’A’<A、①和③B、①和④C、②和③D、②和④标准答案:C知识点解析:此题考查C++流的使用。setfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐:right是使输出数据在指定宽度内右对齐。16、下列关于派生类和基类的描述中,正确的是()。A、派生类成员函数只能访问基类的公有成员B、派生类成员函数只能访问基类的公有和保护成员C、派生类成员函数可以访问基类的所有成员D、派生类对基类的默认继承方式是公有继承标准答案:B知识点解析:派生类不论是采用那种继承方式继承基类,它的成员函数只能访问基类的公有成员和保护成员。17、已知表达式++a中的“++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为()。A、a.operator++(1)B、operator++(a)C、operator++(a,1)D、a.operator++()标准答案:C知识点解析:本题主要是对运算符霞载的考查。“++”实现增加1,所以除了a之外的另一个参数默认为1。18、将前缀运算符“一一”重载为非成员函数,下列原型中,能正确用于类中说明的是()。A、Decr&operator一一(int);B、Decroperator一一(Decr&,int);C、friendDecr&operator一一(Decr&);D、friendDecroperator一一(Decr&,int);标准答案:C知识点解析:因为要作为非成员函数重载,所以加friend,作为前缀操作,其返回的操作结果是对该变量的引用,所以类型为Decr&,操作数出现在参数表中,应声明为引用,即Decr&。19、若要重载+、=、<<、==和[]运算符,则必须作为类成员重载的运算符是()。A、+和=B、=和<<C、==和<<D、=和[]标准答案:D知识点解析:=、[]、()、—>以及所有的类型转换运算符只能作为成员函数重载,而且不能是针对枚举类型操作数的重载。20、有如下程序:#includeusingnamespacestd;classMedia{public:voidName();voidShow();protected:intpage;};classBook:privateMedia{public:voidPrint(){cout<A、语句①B、语句②C、语句③D、语句④标准答案:B知识点解析:类Book私有继承自类Media,所以类Media中的公有成员函数Name()在继承类Book中变成了私有成员函数,因而类Book的对象Bible不能访问私有成员函数Name()。21、如需要向一个二进制文件尾部添加数据,则该文件的打开方式为()。A、ios_base::appB、ios_base::binary|los__base::outC、ios__base::outD、ios_base::binary|ios_base::app标准答案:D知识点解析:ios_base::binary模式是作为二进制文件打开,ios_base::app模式是作为添加数据而打开(总是在尾部写)。22、有如下函数模板定义:templateTfunc(Tx,Ty){returnx*x+y*y;}在下列对func的调用中,错误的是()。A、func(3,5);B、func(3.0,5.5);C、func(3,5.5);D、func(3,5.5);标准答案:C知识点解析:此题考查的是函数模板的使用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题C选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误:A、B选项正确;D选项中,函数名后的是模板实参表,编译系统会将double型的形参“5.5”自动转化成int类型。23、在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是()。A、()B、[]C、<>D、{)标准答案:C知识点解析:声明一个类模板的格式是:template<<模板形参声明>><类声明>。24、下列关于C++流的说明中,正确的是()。A、与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C、cin是一个预定义的输入流类D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象标准答案:A知识点解析:此题考查的是C++流的概念。从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项B错误;cin是一个预定义的输入流对象而不是流类,故选项c错误;输入输出流中没有open成员函数,故选项D错误。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共33题,每题1.0分,共33分。)1、在开发一个C++程序的整个过程中,第3个步骤为()。A、链接B、运行C、编辑D、编译标准答案:A知识点解析:C++程序的开发过程是编辑、编译、链接、运行和调试。2、下列关于this指针的描述中,正确的是()。A、类的成员函数都有this指针B、类的友元函数都有this指针C、任何与类相关的函数都有this指针D、类的非静态成员函数都有this指针标准答案:D知识点解析:mis作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。另外,全局函数和静态函数都不能使用this指针。所以答案为D。3、下列叙述中正确的是()。A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。4、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)()。A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。5、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是()。A、编辑软件B、操作系统C、教务管理系统D、浏览器标准答案:B知识点解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅助管理人员控制开发进程和项目管理的工具软件。6、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:C++引入内联函数的原因是用它来取代C中的预处理宏函数。两者的区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现的。内联函数在调用时像宏函数一样展开,所以它没有一般函数的参数压栈和退栈操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。7、下面不属于软件需求分析阶段主要工作的是()。A、需求变更申请B、需求分析C、需求评审D、需求获取标准答案:A知识点解析:在软件开发的过程中,应该尽早的制定测试计划,其中在需求分析阶段制定系统测试计划,在概要设计阶段制定集成测试计划,在详细设计阶段制定单元测试计划。8、数据流图中带有箭头的线段表示的是()。A、控制流B、事件驱动C、模块调用D、数据流标准答案:D知识点解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。9、软件测试的目的是()。A、评估软件可靠性B、发现并改正程序中的错误C、改正程序中的错误D、发现程序中的错误标准答案:D知识点解析:软件测试的目的是为了发现程序中的错误,而软件调试是为了更正程序中的错误。10、数据库设计的根本目标是要解决()。A、数据共享问题B、数据安全问题C、大量数据存储问题D、简化数据维护标准答案:A知识点解析:数据库应用系统中的一个核心问题就是设计一个能满足用户要求、性能良好的数据库,这就是数据库设计。数据库设计是在一定平台制约下,根据信息需求与处理需求设计出性能良好的数据模式。数据库设计的根本目标是要解决数据共享的问题。11、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){++count;}~MyClass(){一一count;}staticintgetCount(){returncount;}private:staticintcount;};intMyClass::count=0;immain(){MyClassobj;cout<A、121B、232C、221D、122标准答案:A知识点解析:本题考查静态数据成员。静态数据成员在内存中只占一份空间,静态数据成员属于类,即使不定义对象,也会给静态数据成员分配空间,可以被引用。本题中先是定义了一个对象obj,执行构造函数使得静态数据成员count变为了1,然后又定义了指针对象,执行构造函数后,count变为了2,释放指针后,执行析构函数,使得count变为了1。所以本题答案为A。12、用树形结构表示实体之间联系的模型是()。A、关系模型B、网状模型C、层次模型D、以上三个都是标准答案:C知识点解析:层次模型的基本结构是树形结构,这种结构方式在现实世界中很普遍,它们自顶向下、层次分明。13、定义如下枚举类型:enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2};,则下列语句正确的是()。A、表达式Wednesday==Friday的值是trueB、Dayday;day=3C、Dayday;day=Monday+3D、Dayday;day=Tuesday+10标准答案:A知识点解析:enum<枚举类型名>{<枚举元素表>};其中:关键词enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。其中enum{Monday,Tuesday,Wednesday,Thrusday,Friday=2}的值由0开始,即0,1,2,3。D中的本题中的枚举类型中的数据值Wednesday为2,而Friday的值赋值为2,所以判断Wednesday等于:Friday的表达式值为真,即true。即选择A)。14、类MyClass的定义如下:classMyClass{public:MyClass(){value=0;}SetVariable(inti){value=i;}private;intvalue;);则对下列语句序列正确的描述是()。MyClass*P,my;p=&my;A、语句p=&my;是把对象my赋值给指针变量PB、语句Myaass*p,my;会调用两次类MyClass的构造函数C、对语句*p.SetVariable(5)的调用是正确的D、语句p->SetVariable(5)与语句my.SetVariable(5)等价标准答案:D知识点解析:选项A),语句p=&my;是把对象my的地址值赋值给指针变量p;选项B),语句MyClass*p,my;,由于p只是一个指向对象的指针,因此定义指针p不调用构造函数,所以此语句只调用一次构造函数;对成员函数的引用可以通过两种形式:指针->成员函数(形参表)或者对象名.成语函数名(形参表),故选项C)错误,选项D)正确。15、Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是()。A、cppB、exeC、objD、lik标准答案:C知识点解析:在VC6.0集成开发环境下,用户可以使用编译(compile)命令将一个.cpp为扩展名的C++源程序文件转换成一个以obj为扩展名的目标文件。16、在E-R图中,用来表示实体联系的图形是A、椭圆形B、矩形C、菱形D、三角形标准答案:C知识点解析:构成E-R图的基本要素是实体型、属性和联系,其表示方法为:实体型(Entity)一用矩形表示;属性(Attrjbute)一用椭圆形表示,联系(Relationship)一用菱形表示,菱形框内写明联系名。17、有如下程序:#include#includeusingnsmespacestd;classPerson{public:Person(stringn):name(n){cout<<’P’;}private:stringname;};classDate{public:Date(inty=2012,intnl=12,intd=21):year(Y),month(ITI),day(d){cout<<’D’;}private:intyear,month,day;};classStudent:publicPersonipublic:Student(stringn,inty,intm,intd,charc):birthday(y,m,d),sex©,Person(n){cout<<’S’;}private:Datebirthday;charsex;};intrain(){Studentstul(“Zhang”,1990,10,1,‘F’);return0;}运行时的输出结果是()。A、SB、PsC、DPSD、PDS标准答案:D知识点解析:本题考查派生类的构造函数,派生类的构造函数初始化时按照参数列表初始化顺序,所以先初始化Person(n),输出P,然后依次输出D和S,答案为D选项。18、下列定义语句中,错误的是()。A、intpx*;B、char*acp[10];C、char(*pac)[10];D、int(*p)();标准答案:A知识点解析:指针变量声明的一般形式为:<数据类型>*<变量名>,在选项A中,*放在变量名的后面,所以是错误的。19、下列关于函数模板的描述中,正确的是()。A、函数模板是一个实例函数B、使用函数模板定义的函数没有返回类型C、函数模板的类型参数与函数的参数相同D、通过使用不同的类型参数,可以从函数模板得到不同的实例函数标准答案:D知识点解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。20、有如下程序:#include#includeusingnamespacestd;classMyString{public:charstr[80];MyString(constchar*s){strcpy(str,s);}MyString&operator+=(MyStringa){strcat(str,a.str);return*this;}};ostream&operator<<(ostream&s,constMyString&z){returns<A、abcB、cdeC、abcdeD、abccde标准答案:D知识点解析:在类MyString中,定义了带参数的构造函数MyString(constchar*s),其作用是把s指向的字符串拷贝到字符组str中。在类中还对运算+=进行重载定义,其作用是把字符串str和a相连接并赋给str,所以在主函数中执行x+=y时,结果为abccde。21、下列程序段中包含4个函数。其中具有隐含this指针的是()。intfunl();classTest{public:intfun2();friendintfun3();staticintfun4();}A、funlB、fun2C、fun3D、fun4标准答案:B知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针知道自己属于哪一个对象。this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确的地表示出了成员函数当前操作的数据所属的对象。22、有如下类和对象的定义:c1assConstants{public;staticdoublegetPIO{retum3.1416;)};Constantsconstants,下列各组语句中,能输出3.1416的是()。A、cout<<constants—>getPI();和cout<<Constants::gerPI();B、cout<<constants.getPI();和cout<<Constants.getPI();C、cout<<constants—>getPI();和cout<<Constants—>getPI();D、cout<<constants.getPI();和cout<<Constants::getPI();标准答案:D知识点解析:此题考查的是静态成员函数的引用。getPI()是类Constants的静态成员函数。引用静态成员函数可以有两种形式:一是通过类名直接进行调用,例如类名::静态成员函数名:另一种是用类的任何对象名进行调用其作用仅是通过对象名间接的指出类名,例如constants.getPI()选项D即是这种调用方式。23、有如下程序:classBase{public:intdata;};classDerivedl:publicBase{};classDerived2:protectedBase{};intmain(){Derivedldl;Derived2d2;dl.data=0;//①d2.data=0://②return0:}下列关于程序编译结果的描述中,正确的是()。A、①②皆无编译错误B、①有编泽错误,②无编译错误C、①无编译错误,②有编译错误D、①②皆有编译错误标准答案:C知识点解析:保护继承的类Dervied2不能访问基类Base中的公共数据成员data。24、有如下程序:#inc1ude<iostream>usingnamespacestd;classA{public:A(inti){x=i;)voiddispa(){cout<<x<<’,’;}private:intx;};classB:publicA{public:B(inti):A(i+10){x=i;}.voiddispb(){dispa();cout<<x<<end1;}privateintx:};intmain(){Bb(2);b.dispb();return0:}运行时输出的结果是()。A、10,2B、12,10C、12,2D、2,2标准答案:C知识点解析:此题考查的是派生类的构造。主函数中,首先声明B类的对象b,执行进入B的构造函数B(inti)再接着执行A的构造函数A(inti),形参i为12,x被赋值12;通过对象b调用其成员函数dispb(),输出结果12;接着执行函数dispb()的第2条语句输出2,然后主函数结束。25、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assGA{public;virtualintf(){retuml;}};c1assGB:publicGA{public;virtualintf(){return2;}};voidshow(GAg){cout<<g.f();}voiddisp1ay(GA&g){cout<<g.f();}intmain(){GAa:show(a);disp1ay(a);GBb:show(b);disp1ay(b);retum0;}运行时的输出结果是()。A、1111B、1211C、1112D、1212标准答案:C知识点解析:此题考查派生类与虚函数的考查。由主函数main入手,其中分别定义了类GA和GB的对象a和b。首先,执行参数a的show函数调用,其中的输出语句为调用GA类中的f()虚函数,返回1。同理disp1ay(a)函数输出1。show(b)函数中调用的为GA中的f()函数,disp1ay(b)调用GA中f()函数,返回1,disp1ay(b)调用GB中的f()函数返回2。所以最后输出为1112。26、有如下程序:#includeusingnamespacestd;classB{public:virtualvoidf(){cout<<"B";}voidg(){cout<<"B";}};classD:publicB{public:voidf(){cout<<"D";}voidg(){cout<f();P->g();}intmain(){Dobj;h(&obj);return0;}运行这个程序的输出结果是()。A、DDB、BBC、BDD、DB标准答案:D知识点解析:在基类B中定义虚函数f()和成员函数g(),而在派生类D中定义了函数f()和同名函数g()。而函数h中的形参为指向基类的指针变量p,所以在主函数中执行h(&obj)时,会调用派生类的函数f(),输出D,再调用基类的函数g(),输出B。27、在定义函数模板或类模板时,开头的保留字是()。A、typenameB、templateC、classD、typedef标准答案:B知识点解析:定义函数模板或类模板时,开头的保留字是template。28、下列关于模板的描述中,错误的是()。A、类模板的成员函数都是模板函数B、函数模板是一种参数化类型的函数C、满足一定条件时可以省略模板实参D、模板形参只能由关键字t)rpename声明标准答案:D知识点解析:同一模板的声明和定义中,模板形参的名字不必相同。每个模板类型形参前面必须带上关键字typename/class,每个非类型形参前面必须带上类型名字。29、已知主函数中通过如下语句序列实现对函数模板swap的调用:inta[10],b[10];swap(a,b,10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是()。A、temp1ate<typenameT>voidswap(Ta[],Tb[],intsize);B、temp1ate<typenameT>voidswap(intsize,Ta[],Tb[]);C、temp1ate<typenameT1,typenameT2>voidswap(T1a[],T2b[],intsize};D、temp1ate<c1assT1,c1assT2>voidswap(T1a[],T2b[],intsize);标准答案:B知识点解析:由题目中函数swap(a,b,10)调用语句可知,在对函数模板swap的声明语句中,应将第一、二个参数设为数组变量,第三个参数为整型变量。30、在语句“cout<<’A’:”中,cout是()。A、类名B、对象名C、函数名D、C++的关键字标准答案:B知识点解析:C++有四个预定义的流对象:cin标准输,cout标准输出,cerr标准出错信息输出,clog带缓冲的标准出错信息输出。31、在C++中既可以用于文件输入又可以用于文件输出的流类是()。A、fstrearnB、ifstreamC、ofstreamD、iostream标准答案:A知识点解析:文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。ifstream是文件输入流类,ofstream是文件输出流类,fstream是文件输入输出流类,当使用cin、cout的预定义流对象进行针对标准设备的I/O操作,则需.要使用iostream文件。32、下列关于函数模板的描述中,错误的是()。A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B、对于常规参数所对应的模板实参,任何情况下都不能省略C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D、模板参数表不能为空标准答案:D知识点解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。33、下列模板声明中,有语法错误的是()。A、templateTfun(Tx){returnx;}B、templateTfun(Tx,intn){returnx*n;}C、templateTfun(T*p){return*p;}D、templateTclassA{Tn;};标准答案:D知识点解析:第四个选项是定义类模板的,但是class前面的T是多余的。对于第二个选项,同一个类的对象相乘还是同一个类的对象,但是可能要考虑溢出的问题。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共37题,每题1.0分,共37分。)1、结构化程序设计的3种结构是()。A、顺序结构,分支结构,跳转结构B、顺序结构,选择结构,循环结构C、分支结构,选择结构,循环结构D、分支结构,跳转结构,循环结构标准答案:B知识点解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。2、下列描述中正确的是()。A、一个逻辑数据结构只能有一种存储结构B、数据的逻辑结构属于线性结构,存储结构属于非线性结构C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率标准答案:D知识点解析:数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系;数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据的存储结构是指数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种存储结构;而采用不同的存储结构,其数据处理的效率是不同的。3、下列数据结构中,能够按照“先进后出”原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据;队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。4、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为A、219B、229C、230D、231标准答案:B知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故总结点数=叶子节点数+度为2的节点数+度为1的节点数=80+79+70=229。5、有如下程序:#include<iostream>usingnamespacestd;classTest{public:Test(){n+=2;}-TestO{n-=3;}staticintgetNum(){returnn;}private:staticintn:};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<’’n=’’<<Test::getNum()<<end1;return0;}执行后的输出结果是()。A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:语句Test*p=newTest;会调用类的构造函数Test(){n+=2;},使n的值由原来的1变为3,然后deletep调用类的析构函数~Test(){n-=3;},因为n是static型变量,所以会在3的基础上减3使得输出结果为0。6、关于静态成员的描述中,错误的是()。A、静态成员可分为静态数据成员和静态成员函数B、静态数据成员定义后必须在类体内进行初始化C、静态数据成员初始化不使用其构造函数D、静态数据成员函数中不能直接引用非静态成员标准答案:C知识点解析:可以在类的构造函数中对静态数据成员进行初始化。7、设循环队列的存储空间为Q(1:50),初始状态为front=rear=50。经过一系列正常的操作后,front=rear一1。为了在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为A、0B、1C、49D、50标准答案:A知识点解析:front指定队头位置,删除一个元素就将front顺时针移动一位;rear指尾指针,指向元素要插入的位置,插入一个元素就将rear顺时针移动一位;操作后,循环队列的队头指针等于尾指针-1,说明此时队列已经是空队列,那么就不用比较了。8、下面不属于软件设计原则的是()。A、抽象B、模块化C、自底向上D、信息隐藏标准答案:C知识点解析:软件设计的基本原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。9、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。A、提高耦合性降低内聚性有利于提高模块的独立性B、降低耦合性提高内聚性有利于提高模块的独立性C、耦合性是指一个模块内部各个元素间彼此结合的紧密程度D、内聚性是指模块间互相连接的紧密程度标准答案:B知识点解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于模块的独立性。10、下列关于函数的描述中,错误的是()。A、函数可以没有返回值B、函数可以没有参数C、函数可以是一个类的成员D、函数不能被定义为模板标准答案:D知识点解析:本题考查函数的基础知识,函数可以没有返回值,没有参数,也可以是一个类的成员,函数可以定义为模板,即模板函数。11、有如下程序:#includeusingnamespacestd;classtest{private:inta;public:test0{cout+"constructor"+end1;}test(inta){cout+a+end1;}test(consttest&test){a=test.a;cout+,,copyconstructor"+end1;{test(){Cout+"destructor"+end1;){;intmain(){testA(3);return0;{运行时输出的结果是()。A、3B、constructordestructorC、copyconstructordestructorD、3destructor标准答案:D知识点解析:此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一个,而在销毁时又会隐含调用唯一的析构函数。此题中,主函数创建对象A是会隐含调用test(inta)这个构造函数,输出3:接着主函数结束,对象A销毁又隐含调用~test()析构函数输出destructor。12、有如下程序:#inchdeusingnamespacestd;classB{public:virtualvoidshow(){cout<<“B”;}};classD:publicB{public:voidshow(){tout<<“D”;}};voidfunl(B*ptr){ptr一>show();}voidfun2(B&ref){ref..show();}voidfun3(Bb){b.show();}intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);deletep;return0;}执行这个程序的输出结果是()。A、BBBB、BBDC、DBBD、DBD标准答案:C知识点解析:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义类B的对象b、对象指针木p=newD以及类D的对象d;执行funl会调用派生类的show函数,因为show函数为虚函数,而调用fun2、fun3仍然为基类的show函数,所以本题答案为C。13、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:两个实体集间的联系可以有下面几种:一对一的联系、一对多或多对一的联系和多对多的联系。由于一个宿舍可以住多个学生,所以它们的联系是一对多联系。14、己知枚举类型定义语句为: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。15、下列字符串中不能作为C++标识符使用的是()。A、WHILEB、userC、_lvarD、9stars标准答案:D知识点解析:在C++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者下划线。16、有如下程序:#includeusingnamespacestd;classBase{public:voidfun0{cout<<’n’B;}};classDerived:publicBase{public:voidfun(){_______tout<<’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()。17、若有定义语句“inti=2,j=3;”,则表达式i/j的结果是()。A、0B、0.7C、0.66667D、0.66666667标准答案:A知识点解析:由于变量i、j都是整型变量,所以两者相除所得的商也是整型数据。18、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:此题考查的是继承和派生。无论使用哪种继承方式,派生类中的成员都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,所以选项A错误;C++中只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以选项B错误;在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新定义,故选项D错误。19、若已经声明了函数原型“voidfun(inta,doubleb=0.0);”,则下列重载函数声明中正确的是()。A、voidfun(inta=90,doubleb=0.0);B、intfun(inta,doubleb);C、voidfun(doublea,intb);D、boolfun(inta,doubleb=0.0);标准答案:C知识点解析:函数重载的原则就是至少要在参数个数或参数类型上有所不同。且如果函数只是函数类型不同的,而其他完全相同,也不能作为重载函数来使用。20、下列关于函数模板的描述中,错误的是()。A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B、对于常规参数所对应的模板实参,任何情况下都不能省略C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D、模板参数表不能为空标准答案:D知识点解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。21、为了取代C中带参数的宏,在C++中使用()。A、重载函数B、内联函数C、递归函数D、友元函数标准答案:B知识点解析:此题考查的是内联函数。C++语言引入内联函数的原因是用它来取代C语言的预处理宏函数。故选项B正确。22、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:C++引入内联函数的原因是用它来取代C中的预处理宏函数。两者的区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现的。内联函数在调用时像宏函数一样展开,所以它没有一般函数的参数压栈和退栈操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。23、若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:C1、*C2、C3是3个MyClass对象,C4是Mvclass对象的引用,它是对象C1的别名。24、在函数中,可以用auto、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。A、autoB、extemC、registerD、static标准答案:A知识点解析:此题考查的是存储类型。C++语言变量的存储类型分为如下几种类型:auto函数内部的局部变量;static…静态存储分配;extern全局变量;register变量存储在硬件寄存器中。25、在语句“cout<<’A’;”中,cout是()。A、类名B、对象名C、函数名D、C++的关键字标准答案:B知识点解析:C++有四个预定义的流对象:cin标准输,cout标准输出,cerr标准出错信息输出,clog带缓冲的标准出错信息输出。26、有如下程序:#include<iostream>usingnarnespacestd;classtest{private:inta;public:test0{cout+’’constructor’’+endl;}test(inta){cout+a+endl;}test(consttest&test){a=test.a;cout+’’copyconstructor’’+en.d1;}test(){cout+’’destructor"+endl;}};intmain(){testA(3);return0;}运行时输出的结果是()。A、3B、constructordestructorC、copyconstructordestructorD、3destructor标准答案:D知识点解析:此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一个,而在销毁时又会隐含调用唯一的析构函数。此题中,主函数创建对象A是会隐含调用。test(inta)这个构造函数,输出3;接着主函数结束,对象A销毁又隐含调用~test()析构函数输出destructor。27、如下函数的作用是以双倍行距输出文件:voiddouble_space(ifstream&f,ofstream&t){charc;while(_________){;___________if(c==’\n’)t.put(c);}}画线处缺失的部分是()。A、f.get(e)与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()函数作用是读入一个字符,所以调用它的应该是输入文件流ifstreae锄对象f.put()函数作用是输出一个字符,所以调用它的应该是输入文件流ofstream对象t,故选项B、C排除。读入和输出应该是有顺序的,应该先读入后输出,所以前一空填fget(c),后一空填t.put(c)。28、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);dOubleval;function(val);cout<A、编译出错,无法运行B、输出:3C、输出:3.0D、输出一个不确定的数标准答案:D知识点解析:此题考查的是函数参数的传递。C++语言中,函数在传递参数时,总是将实参的值传递给被调用函数的形参,即传值调用。因此,在函数中对形参所作的任何操作都不会改变实参的值。29、下列运算符不能重载为友元函数的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=标准答案:A知识点解析:此题考查的是运算符重载的概念。C抖语言规定,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。30、有如下类声明: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知识点解析:此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式为:派生类名(构造函数形参表)基类构造函数(形参表)。31、有如下程序:#include<iostream>usingnamespacestd;classA{public:A(){cout<<’’A’’;}~A(){cout<<’’~A’’;}};classB:publicA{A*p;public:B(){cout<<’’B’’;p=newA();}~B(){cout<<’’~Bt’’;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。32、有如下程序:##inc1ude<iostream>usingnamespacestd;classc1{public:~C1(){cout<<1;}};classC2:publicC1{public:~C2(){cout<<2;}};intmain(){C2cb2;C1*cbl;return0;}运行时的输出结果是()。A、121B、21C、211D、12标准答案:B知识点解析:在主函数中定义C2类的对象,当程序结束时,首先调用C2类的析构函数~C2,输出2,再调用Cl类的析构函数~Cl,输出l。所以程序运行的结果就是21。33、下列运算符中,不能被重载的是()。A、&&B、!=C、.D、++标准答案:C知识点解析:此题考查的是运算符重载。在C++中,只有.、.*、—>*、∷、?:这五个运算符不能重载。34、下列运算符函数中肯定不属于类FunNumber的成员函数的是()。A、intoperator—(FunNumber);B、FunNumberoperator—0;C、FunNumberoperator—(int),D、intoperator—(FunNumber;FunNumber);标准答案:D知识点解析:此题考查的是运算符“—”的重载。“—”运算符有一元和二元两种,且均可以重载为成员函数和非成员函数。运算符重载为成员函数时,形参个数一般为运算符元数减1:重载为非成员函数时,形参个数一般和运算符元数相等。所以,“.”运算符重载为成员函数时,参数可以是0个或1个:而重载为非成员函数时,参数个数可以是1个或2个。所以D选项,肯定是重载为非成员函数。35、下列函数模版中的定义中,合法的是()。A、temp1ate<typenameT>Tabs(Tx){returnx<0?—x:x;)B、temp1atec1ass<T>Tabs(Tx){returnx<0?—x:x;}C、temp1ateT<c1assT>abs(Tx){returnx<0?—x:x;}D、temp1ateTabs(Tx){retumx<0?—x:x;)标准答案:A知识点解析:此题考查的是函数模板。声明一个函数模板的格式是:temp1ate<模板形参表声明>函数声明,其中的<模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:t)rpename参数名;class参数名;类型修饰参数名。36、下列关于函数模板的描述中,错误的是()。A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B、对于常规参数所对应的模板实参,任何情况下都不能省略C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D、模板参数表不能为空标准答案:D知识点解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若十参数,则模板实参表中的那几个参数可以省略。37、有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){cout.fill(’*’);cout<<left<<setw(4)<<123<<<’’OK’’<<endl;return0;}执行这个程序的输出结果是()。A、123*OKB、123*OK**C、*123OKD、*123**OK标准答案:A知识点解析:此题考查了输出流的格式控制。cout的fill()是设置填充字符:left和endl分别是使输出数据左对齐和换行;setw()函数的作用是设置输入输出的宽度,此设置效果只对以此输入或输出有效。此题中,输出整数123时宽度为4且左对齐,得到“123*”;输出字符串“OK”时宽度没有定义实际大小输出,结果得到OK:故最后得到的输出结果是123*K。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共23题,每题1.0分,共23分。)1、有如下程序:#includeusingnamespacestd;intmain(){inta[6]={23,15,64,33,40,58);ints1,s2;s1=s2=a[0];for(int*p)=a+1;p<a+6;p++){if(s1>*p)s1=*p;if(s2<*p)s2=*p;}cout<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。2、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为()。A、9B、10C、45D、90标准答案:C知识点解析:线性表的长度为n,最坏情况下冒泡排序需要比较的次数为n(n-1)/2。3、有如下程序:#includeusingnamespacestd;classPoint{public:staticintnumber;public:Pointo{number++;}-Point(){number-一;));intPoint::number~0;voidmain0{Point*ptr;PointA,B;{Point*ptr_point=newPoint[3];ptx=ptr_point;)PointC:Gout+Point::number+endl;delete[]ptr;)运行时输出的结果是()。A、3B、4C、6D、7标准答案:C知识点解析:此题是静态成员、对象的构造和对象的生存期等知识点的综合考查。此题定义了一个静态成员变量number,初始值为0。土函数中第2行定义了2个Point对象,此时number变为2;随后new运算符又定义了一个包含3个Point对象元素的数组,其通过delete结束后number的值变为5;然后又定义了一个Point对象C,number变为6;最后输出number的内容。4、下面描述中不属于数据库系统特点的是()。A、数据共享B、数据完整性C、数据冗余度高D、数据独立性高标准答案:C知识点解析:数据系统的基本特点有数据的集成性、数据的高共享性与低冗余性、数据的独立性、数据统一管理与控制。5、有如下程序:#includeusingnamespacestd;intmain(){.inta[6]={23,15,64,33,40,58);ints1,s2;s1=s2=a[0];for(int*p=a+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。6、下列语句中,错误的是()。A、constintbuffer=256;B、constdouble*point;C、intconstbuffer=256;D、double*constpoint;标准答案:D知识点解析:此题考查的是常指针和指针常量的概念。常指针是指向一个常量的指针变量,指针自身的内容可以改变但指针指向的内容不可以改变;指针常量是一个常量,即不能修改指针自身的内容,但可以通过指针修改其所指向的内容。D选项中指针常量point没有初始化,编译无法通过。7、在数据库中,产生数据不一致的根本原因是A、数据冗余B、没有严格保护数据C、未对数据进行完整性控制D、数据存储量太大标准答案:A知识点解析:在一个数据集合中重复的数据称为数据冗余。数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。8、有如下程序:#inc1ude<iostream>usingnamespacestd;classONE{intC:public:ONE():c(0){cout<<1;)ONE(intn):c(n){cout<<2;)};classTWO{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<3;}};intmain(){TWOt(4);return0:}运行时的输出结果是()。A、3B、23C、123D、213标准答案:C知识点解析:由类TWO的定义可知,其成员为类ONE的两个对象onel和one2。所以在主函数中构建类TWO的对象t(4)时,先后调用类ONE的构造函数ONE():c(0){cout<<1;}和ONE(intn):c(n){cout<<2;}输出12,然后再调用类TWO的构造函数TWO(intm):one2(m){cout<<3;},输出3。9、下列运算符函数中,肯定不属于类Value的成员函数的是()。A、Valueoperator+(Value);B、Valueoperator-(Value,Value);C、Valueoperator*(int);D、Valueoperator/(Value);标准答案:B知识点解析:运算符作为非成员函数时,由于没有隐含this指针,因此所有的操作数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。10、若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为()。A、AA.getA()B、x.getA()C、x.AD、AA::a标准答案:B知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数getA()。11、在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:如果一个类中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。12、有如下程序:#includeusingnamespacestd;classBase{intx;public;Base{intn=0);x(n){cout<A、375B、357C、0375D、0357标准答案:C知识点解析:此题考查的是派生类的构造与析构。建立派生类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)->执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序->执行自身的构造函数。此题中,执行语句Derivedd1(3)首先调用基类的构造函数,输出0;接着调用自身的构造函数输出3。执行语句Derivedd2(5,7)时,会调用基类的Base(n)函数输出7;然后执行继承类中的Derived(intm,intn)的y(m)输出5。13、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assBasel{public:Basel(intd){cout<<d;)~Base1(){}};c1assBase2{public:Base2(intd){cout<<d;}~Base2(){}};c1assDerived:publicBasel,Base2{public:Derived(inta,intb,intc,intd);Basel(b),Base2(a),bl(d),b2(c){}Private:intb1;intb2;};intmain(){Derivedd(1,2,3,4);return0;}运行时的输出结果是()。A、1234B、2134C、12D、21标准答案:D知识点解析:程序在创建派生类对象d时,分别调用基类Basel和Basel的构造函数。14、有如下程序:#include<iostream>using
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外登山野营旅行用品618宣传及营销方案
- 2026年土木工程试验员考试重点题集
- 2026年零碳工厂评估师初级笔试备考指南
- 2026年政府会计准则制度实施能力考试冲刺卷事业单位
- 2026年应届生财务基础笔试题库
- 2026年初中英语教师招聘考试模拟题
- 2026年安全技能竞赛活动方案
- 2026年土木工程师初级高频考点
- 2026年小学生冬季校园安全知识
- 2026年销售员知识技能培训
- 第四章土壤污染化学第二节污染物在土壤-植物体系中的迁移及其机制课件
- 广西壮族自治区崇左市各县区乡镇行政村村庄村名明细及行政区划划分代码居民村民委员会
- 广西壮族自治区玉林市各县区乡镇行政村村庄村名明细及行政区划划分代码居民村民委员会
- 浙江省全科医师转岗培训大纲
- 面板数据分析方法
- c30砼回弹值对照表
- 新安标(煤安)现场评审模板教程文件
- 生活垃圾循环流化床焚烧炉CO排放控制技术
- 工程项目施工人员安全指导手册75页课件
- TCABEE 030-2022 民用建筑直流配电设计标准
- 第八章 自然通风与局部送风
评论
0/150
提交评论