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

下载本文档

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

文档简介

国家二级(C++)机试模拟试卷35(共9套)(共364题)国家二级(C++)机试模拟试卷第1套一、选择题(本题共37题,每题1.0分,共37分。)1、if语句的语法格式可描述为:格式1:if(<条件>)<语句>或格式2:if(<条件>)<语句1>else<语句2>关于上面的语法格式,下列表述中错误的是()。A、<条件>部分可以是一个if语句,例如if(if(a==0)…)…B、<语句>部分可以是一个if语句,例如if(…)if(…)…C、如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变D、<语句>部分可以是一个循环语句,例如if(…)while(…)…标准答案:A知识点解析:本题考查if语句,if语句的条件部分不能嵌套if语句,所以A选项错误;B选项就是if语句嵌套;C选项其实就是将判断条件颠倒,然后执行语句也颠倒,所以效果一样;D选项也正确。2、假定MyClass为一个类,那么下列的函数说明中,()为该类的析构函数。A、void~MyClass();B、~MyClass(intn);C、MyClass();D、~MyClass();标准答案:D知识点解析:C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass(1。3、字面常量42、4.2、42L的数据类型分别是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long标准答案:C知识点解析:此题考查的知识点是字面常量。对于整型字面常量,只要没有超过C++中整数所能表示的范围,C++将自动按整数来存储此数,也可以通过在整型字面常量后添加u或1来指定无符号整数或长整数来存储;对于实型字面常量,C++将自动按照双精度数来存储,也可以通过在实型字面常量后添加f来指定按单精度数存储。4、下列符号中不属于C++关键字的是()。A、friendB、namespaceC、continueD、byte标准答案:D知识点解析:本题考查C++关键字,属于基本常识,显然D选项不正确。5、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。6、若整型变量a、b、C、d中的值依次为:1、4、3、2。则条件表达式aA、1B、2C、3D、4标准答案:A知识点解析:首先把c7、软件详细设计产生的图如下:该图是()。A、N-S图B、PAD图C、程序流程图D、E-R图标准答案:C知识点解析:N—S图提出了用方框图来代替传统的程序流程图,所以A不对。PAD图是问题分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形表示工具,所以B不对。E—R图是数据库中的用于表示E—R模型的图示工具,所以D不对。根据图中所示表示方法是进行软件详细设计时使用的程序流程图。8、已知枚举类型定义语句为: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。9、下面对静态数据成员的描述中,正确的是()。A、静态数据成员是类的所有对象共享的数据B、类的每个对象都有自己的静态数据成员C、类的不同对象有不同的静态数据成员值D、静态数据成员不能通过类的对象调用标准答案:A知识点解析:静态成员表示整个类范围共享的信息;必须对静态数据成员进行初始化;静态数据成员是属于类的,不能通过类的对象调用。10、下列关于虚基类的描述,错误的是()。A、设置虚基类的目的是为了消除二义性B、虚基类的构造函数在非虚基类之后调用C、若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D、若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数标准答案:B知识点解析:虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数先于非虚基类的构造函数执行。11、在数据库中,数据模型包括数据结构、数据操作和()。A、数据约束B、数据类型C、关系运算D、查询标准答案:A知识点解析:数据模型通常由数据结构、数据操作及数据约束3部分组成。故A选项正确。12、下列叙述中,正确的是()。A、软件交付使用后还需要进行维护B、软件一旦交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:软件的运行和维护足指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。13、在数据库管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是()。A、人工管理阶段B、文件系统阶段C、文件系统阶段和数据库阶段D、人工管理阶段和文件系统阶段标准答案:A知识点解析:数据库管理技术的三个阶段是人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段没有专门的软件对数据进行管理。故本题答案为A选项。14、已知在一程序中已定义函数doubleMak(intm,doublen);则下列函数中不可在同一程序中重载的是A、intMak(intm,doublen);B、doubleMak(intm,intn);C、doubleMak(doublem,intn);D、doubleMak(intn);标准答案:A知识点解析:本题考查函数重载相关知识,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。返回值类型对区别重载函数没有意义。所以答案为A选项。15、用于定义类的必不可少的C++关键字是A、autoB、returnC、classD、public标准答案:C知识点解析:本题定义类的基础知识,定义类时使用的关键字为class,所以C选项正确。16、在下列表述中,用来正确表示"相对于当前位置"文件定位方式的是A、ios_base::curB、ios_base::begC、ios_base::outD、ios_base::end标准答案:A知识点解析:本题考查文件流的定位操作,属于基础知识,A选项正确。17、下面描述不属于软件特点的是A、软件是一种逻辑实体,具有抽象性B、软件在使用中不存在磨损、老化问题C、软件复杂性高D、软件使用不涉及知识产权标准答案:D知识点解析:软件具有以下特点:软件是一种逻辑实体,具有抽象性;软件没有明显的制作过程;软件在使用期间不存在磨损、老化问题;对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素,如知识产权等。故选项D正确。18、有类定义如下:classType(public:Type(inti=0);Typeoperator-(int);friendTypeoperator+(Type,Type);private;intval;);若有对象定义Typec1;则下列语句序列中,错误的是()。A、Type(3)+c1;B、cl+Type(3);C、3-c1;D、c1-3;标准答案:D知识点解析:本题考查了operator运算符重载的知识,D不符合重载的参数顺序。19、在学校中,“班级”与“学生”两个实体集之间的联系属于()关系。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。20、对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。A、冒泡排序为n(n—1)/2B、简单插入排序为nC、希尔排序为nD、快速排序为n/2标准答案:A知识点解析:在最坏情况下,冒泡排序所需要的比较次数为n(n—1)/2:简单插入排序所需要的比较次数为n(n—1)/2;希尔排序所需要的比较次数为O(n1.5):堆排序所需要的比较次数为O(nlog2n)。21、下面关于常成员函数的说法中正确的是()。A、常成员函数不能修改任何的数据成员B、常成员函数只能修改一般的数据成员C、常成员函数只能修改常数据成员D、常成员函数只能通过常对象来调用标准答案:A知识点解析:C++中使用const关键字来说明函数称为常成员函数,常成员函数不能更新对象中的数据成员。22、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值标准答案:A知识点解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。23、有如下程序:#includeusingnamespacestd;classBase{public:voidfun(){cout<<"Base::fun"<A、Base.fun();B、Base::fun();C、Base->fun();D、fun();标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。本题中想要输出Base::fun,则必须调用基类的公用成员函数fun,所以使用Base::fun();来调用基类的成员函数fun。24、p是指向ClassA类型对象的指针。执行deletep;时,系统自动调用A、析构函数B、构造函数C、静态函数D、友元函数标准答案:A知识点解析:指向对象的指针使用delete删除时,该指针指向的对象会被撤销,编译器会自动调用析构函数来释放该对象占有的资源,答案为A。25、下列叙述中,正确的是A、false是一个字符型常量B、false是一个字符型常量C、11是一个逻辑型常量D、1.1是一个double常量标准答案:D知识点解析:false是逻辑常量,A选项错误;’0’是字符常量,字符串常量是用双引号括起来的若干字符序列,B选项错误;11是一个整型常量,C选项错误;1.1是浮点型常量,一般按双精度处理,是double型常量,答案为D。26、下列符号中能够作为C++标识符的是()。A、constB、2aC、_shapeD、count标准答案:C知识点解析:本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项A是关键字,选项B不能以数字开头,选项D包含了字符"-",且不能以此字符开头。故答案为C。27、下列有关继承和派生的表述中,正确的是A、作为虚基类的类不能被实例化B、派生类不能访问基类的保护成员C、派生类应当向基类的构造函数传递参数D、虚函数必须在派生类中重新实现标准答案:C知识点解析:作为虚基类的类可以被实例化,派生类公用继承和保护继承基类,都可以访问基类的保护成员。如果派生类没有对虚函数重新定义,那么就调用基类的虚函数。所以C选项正确。28、面向对象方法中,实现对象的数据和操作结合于统一体中的是A、结合B、封装C、隐藏D、抽象标准答案:B知识点解析:对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式,B选项正确。29、下列函数模板声明中,合法的是A、templateTabs(Tx);B、templateclassTabs(Tx);C、templateTabs(Tx);D、template<>Tabs(Tx);标准答案:A知识点解析:选项B中类型形参T前需要有关键字class或typename修饰;选项C中函数ads需要返回值;选项D中形参表不能为空;答案为A。30、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性标准答案:B知识点解析:线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。31、ClassA是一个类,现在执行下面语句:ClassAa[2],*b[2],*c=newClassA;调用ClassA类的构造函数的次数是A、1B、2C、3D、5标准答案:C知识点解析:创建对象数组时,需要用默认构造函数初始化每个元素,所以ClassAa[2]需要调用2次构造函数;创建对象指针数组b,数组b的元素是对象指针,没有生成新的对象,不需要调用构造函数;创建对象指针c,并使用动态分配方式创建新的对象,将新对象的指针赋给c,需要调用构造函数;综上所述,答案为C。32、在名为BigNumber的类的类体中对运算符函数double进行了如下声明:operatordouble(BigNumber);函数声明中有一个明显的错误,这个错误就是A、参数表中不应该有任何参数B、缺少对函数返回类型的说明C、参数声明中缺少参数变量D、函数声明中缺少函数体标准答案:A知识点解析:本题考查类型转换函数,其一般形式如下:operator类型名(){实现转换的语句}在函数名前面不能指定函数类型,函数没有参数,所以A选项错误。33、下列字符串中不能作为C++标识符使用的是A、DOUBLEB、ab~cC、_5_D、xyz标准答案:B知识点解析:C++的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。选项B错误,答案选B。34、有如下类定义:classNumber{private:staticintnum;};要初始化Number类的静态成员num,应当在后面加上语句:A、intnum=0;B、staticintnum=0;C、intNumber::num=0;D、staticintNumber::num=0;标准答案:C知识点解析:静态数据成员必须在类定义体的外部定义,和任意的类成员一样,在类定义体外部引用类的静态数据成员时,需要指定成员的所属类,并且static关键字只能用于类定义体内部的声明中,在外部定义时不能标示static。因此,答案为C。35、有如下程序段:inti=0,j=1;nt&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中会产生编译错误的语句是()。A、④B、③C、②D、①标准答案:A知识点解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。36、有如下函数模板:templateTcast(Uu){returnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);标准答案:D知识点解析:本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为D。37、下列排序方法中,最坏情况下比较次数最少的是()。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序标准答案:D知识点解析:冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。二、基本操作题(本题共1题,每题1.0分,共1分。)38、使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:151注意:错误的语句在//********error********的下面,修改该语句即可。#include//********error********enum{Sun,Mon,Tue,Wed,Thu,Fri,Sat,//********error********}MyEnum;structstruct{**********error********intFri,intSun;};Voidmain(){inti=Mon;MyEnumt=Fri;structstr1;str1.Fri=Mon;cout<标准答案:(1)enumMyEnum(2)};(3)intFri;知识点解析:(1)第一标识下声明枚举类型,声明枚举类型的一般形式为:“enum<枚举类型名>{<枚举常量列表>};”,程序当中把枚举类型名MyEnum放到枚举声明后面,显然不符合枚举类型声明格式,因此第1个标识下应改成“enumMyEnum”。(2)由(1)的分析可知,第2个标识下也不符合枚举类型声明格式,应以“:”结束,即第2个标识下应改为“};”。(3)第3标识处声明结构体,结构体定义的一般形式为:struct<结构体名>{<成员列表>}<变量名列表>;结构体中成员列表中各个元素是不同的变量,变量之间应以分号隔开,而不是以逗号隔开,因此第3个标识下应改为为“intFri;”。三、简单应用题(本题共1题,每题1.0分,共1分。)39、使用VC++6.0打开考生文件夹下的源程序文件2.cpp,请实现函数fun(doublea[],intlen)的如下功能:(1)a[]是一个数组,长度为len。(2)a[0]=0,a[1]=1。(3)a[i+2]=a[i]+a[i+1]。注意:不能修改函数的其他部分。试题程序:#includevoidfun(doublea[],intlen){}voidmain(){doubleaE20];fun(a,20);for(inti=0;i<20;i++){std::cout<标准答案:voidfun(doublea[],intlen){if(len)0)a[0]=0;if(len)1)a[1]=1;for(inti=2;i(len;i++)a[i]=a[i-1]+a[i-2];}知识点解析:本题考查的是计算数列值。首先给a[0]和a[1]赋初值,注意判断数组是否越界,然后循环遍历a[2]~a[len1],根据题目给出关系计算每一个元素的值。四、综合应用题(本题共1题,每题1.0分,共1分。)40、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义类的私有变量a、b,请在注释//********1********后添加适当的语句。(2)完成类的构造函数,对变量a、b赋值,缺省两个变量值为1,在注释//********2********之后添加语句。(3)完成打印函数display(),打印出“a*b=c”格式的一个乘法算式,在注释//********3********之后添加语句。(4)补充主函数,使得打印9×9的乘法口诀。在注释//********4********后添加语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#includeclassCMyFormula{private://********1********public://********2********{this一>a=a;this->b=b;}voidset(intx,inty){a=x;b=y;}voiddisplay(){//********3********}};intmain(){CMyFormulaformular(1,1);for(inti=1;i<=9;i++){//********4********for(intj=1;j++){formular.set(j,i);formular.display();cout<<"";}cout<标准答案:(1)添加语句:inta,b;(2)添加语句:CMyFormula(inta=1,intb=1)(3)添加语句:cout<知识点解析:(1)第1个标识下完成CMyFormula类的私有变量a、b的定义,从函数set(intx,inty)的参数类型可以看出a和b均为int型变量,故第1个标识下应添加“hata,b;”。(2)第2个标识下添加构造函数声明,完成对变量a、b赋值,该构造有两个参数a和b,且a和b缺省值为1,因此第2个标识下应添加“CMyFormula(inta=1,intb=1)”。(3)打印函数display()在屏幕上打印出“a*b=c”格式的一个乘法算式,因此第3个标识下应添加“cout<国家二级(C++)机试模拟试卷第2套一、选择题(本题共39题,每题1.0分,共39分。)1、下面程序的运行结果是()。#includeintx=5;intfun(imta){inte;c=x*a;returnc;}voidmain(){intx=3,a=4;X=X+fun(a);cout<<"x="<A、x=15B、x=17C、x=23D、x=25标准答案:C知识点解析:由主函数main入手,首先x被赋值为3,a被赋值为4。然后调用fun函数,参数为4,所以在fun函数中的a=4。而主程序中的x作用域是由它定义开始到cout输出,在tan函数中无效。而在fun函数定义前的变量x作用域是整个程序,所以fun函数中的x值为5,这样c的值就为20。在主函数中的x+fun(a)中的x为靠近这条语句的x定义,即3,所以最后x的值为20+3=23。2、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C。3、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。4、有如下程序:intx=3;do{x-=2:cout<A、1B、30C、1-2D、死循环标准答案:C知识点解析:第一次循环输出1,第二次循环输出是一2。在输出二次循环后!(-x)为0条件不满足。停止循环。5、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout<A、编译出错,无法运行B、输出:3C、输出:3.0D、输出一个不确定的数标准答案:D知识点解析:本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选项正确。6、有如下程序:#include<iostream>usingnamespaeestd;classObj{staticinti;public:obj(){i++;}-obj(){i--;}staticintgetVal(){returni;}};intobj∷i=0:voidf(){objoh2;cout<<ob2.getVal();}intmain(){objob1;f();Obj*ob3=newobj;cout<<oh3->getVal();deleteob3;cout<<obj∷getVal();return0;}执行这个程序的输出结果是()。A、232B、231C、222D、221标准答案:D知识点解析:本题考查构造函数和析构函数的调用顺序,调用顺序为先构造的后析构,后构造的先析构。本题中先定义了一个对象ob1,会执行构造函数,那么i就变为了1;再执行函数f后,由于又定义了一个对象ob2,所以再次执行构造函数,i就变为了2,输出了2。函数执行完后执行析构函数,i变为了1,然后又定义了对象指针,i变为了2。释放ob3后,i变为了1,所以答案为D。7、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:私有继承方式为基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有,但派生类对象可以访问基类的保护成员,所以基类对象不能赋值给派生类对象。抽象类是指含有纯虚拟函数的类,所以选项D正确。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、数据结构主要研究的是数据的逻辑结构、数据的运算和()。A、数据的方法B、数据的存储结构C、数据的对象D、数据的逻辑存储标准答案:B知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。10、软件设计中划分模块的一个准则是()。A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性.有利于提高模块的独立性。11、下列关于运算符重载的描述中,正确的是()。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:A知识点解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。c++有5个运算符不能重载,它们是:.(成员访问运算符)、.*(成员指针访问运算符)、::(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。12、C++中的模板包括()。A、对象模板和函数模板B、对象模板和类模板C、函数模板和类模板D、变量模板和对象模板标准答案:C知识点解析:本题考查函数模板和类模板,所以答案为c。13、有如下程序段:inti=1;intj=4;intmain(){inti=8,j=i;cout<A、14B、81C、88D、18标准答案:C知识点解析:全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明,本题中定义了两个全局变量i,j,所以主函数中对全局变量重新赋值输出后为88,所以答案为C。14、下列语句中,错误的是()。A、constintbuffer=-256;B、constinttemp;C、constdouble*ooint;D、constdouble*rt=newdouble(5.5);标准答案:B知识点解析:符号常量声明语句的语法格式足:const类型名符号常量=初值表达式,选项B)中未给常变量赋初值,故错误:而选项C)中定义的是一个指向浮点型常量的指针,而不是定义一个浮点型常量,所以可以不赋初值。15、执行完下列代码段之后:bootx=true,V=false,Z=false;x=x&&yttz;y=xIIy&&z;z=!(x!=y)II(y=z);则x=false,y=false,z=()。A、真B、假C、不确定D、异常标准答案:A知识点解析:其中“x=x&&yfIz;”语句计算后x=false,“y=xlIy&&z;”语句计算后y=false。那么“z=!(x!=y)ll(y==z);”语句计算后“z=!(。ture)lItrue”,所以答案为:true.16、有如下函数模板:templateTcast(Uu){returnu;}功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);标准答案:D知识点解析:选项D)是将double类型的数据转化成int类型的数据,正确。17、下列关于运算符重载的叙述中,错误的是()。A、重载运算符时能够改变运算符原有的优先级B、有些运算符不能作为普通函数重载C、重载运算符时不能改变运算符原有的操作数个数D、加法运算符重载为成员函数时形参表只有一个参数标准答案:A知识点解析:C++中,运算符重载的规则有:重载不能改变运算符的优先级,选项A错误;赋值运算符=、下标运算符[]、调用运算符()、成员访问箭头运算符一>等必须重载为成员函数,不能作为普通函数重载,选项B正确;重载不能改变运算符运算对象(操作数)的个数,选项C正确;加法运算符有两个操作数,作为成员函数重载时,第一操作数是调用对象本身,所以形参表只有一个操作数,选项D正确;本题答案为A。18、下列选项中不能用于区分重载函数的是()。A、形参的个数B、形参的类型C、函数的返回值类型D、常函数关键字const标准答案:C知识点解析:出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称这两个函数为重载函数,形参表的不同包括形参个数不同和形参类型不同;另外const定义的常函数与相同名字且相同形参表的普通函数可以重载;但函数不能仅仅基于不同的返回类型而实现重载,选项C错误。本题答案为C选项。19、下列关于构造函数的叙述中,错误的是()。A、构造函数名与类名相同B、构造函数可以有返回值C、构造函数可以重载D、每个类都有构造函数标准答案:B知识点解析:构造函数的名字和类的名字相同,选项A正确;构造函数没有返回值,小能指定返回类型,选项B错误;构造函数可以被重载,选项C正确;每个类都有构造函数,如果类定义中不提供任何构造函数,那么编译器会在需要时,自动生成一个构造函数,选项D正确。本题答案为B选项。20、对下列二树进行前序遍历的结果为()。A、ABCDEFGHB、ABDGEHCFC、GDBEHACFD、GDHEBFCA标准答案:B知识点解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根→按前序遍历左子树→按前序遍历右子树。②中序,按中序遍历左子树→访问根→按中序遍历右子树。③后序,按后序遍历左子树→按后序遍历右子树→访问根。所以对该二叉树的中序遍历结果为ABDGEHCF。21、下列关于函数参数的叙述中,错误的是A、函数的实参与形参应该一一匹配B、定义函数时必须给出函数的实参C、函数形参可以看做函数的局部变量D、C++中可以为形参指定默认值标准答案:B知识点解析:函数定义时,形参列表若不为空,需要给出函数的形参;调用函数时,参数列表若不为空,必须给出函数的实参;选项A、C、D正确,选项B错误;答案为B。22、有如下程序:#includeusingnamespacestd;classAA{public:AA(intn){cout<A、321B、231C、213D、123标准答案:D知识点解析:构造函数初始化列表仅指定用于初始化成员的值,并不指定这些初始化执行的次序;初始化执行的次序是根据类定义中成员的声明顺序完成的,初始化列表结束后,再执行函数体;程序创建CC对象c,调用CC的构造函数,由于在类CC中,AA类对象a首先声明,所以先调用AA类的构造函数,完成成员a的初始化,输出"1",再调用BB类的构造函数,完成成员b的初始化,输出"2",最后执行CC构造函数的函数体,输出"3";答案为D。23、有如下类定义: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。24、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:除了堆排序算法的比较次数是O(nlog2n),其他的都是n(n-1)/2。25、数据流图中带有箭头的线段表示的是()。A、控制流B、事件驱动C、模块调用D、数据流标准答案:D知识点解析:数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。26、下列关于C++预定义流对象的叙述中,正确的是()。A、cin是C++预定义的标准输入流对象B、cin是C++预定义的标准输入流类C、cout是C++预定义的标准输入流对象D、cout是C++预定义的标准输入流类标准答案:A知识点解析:cin是C++预定义的标准输入流对象,cout是C++预定义的标准输出流对象。27、下列关于C++流的叙述中,正确的是A、与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C、cin是一个预定义的输入流类D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象标准答案:A知识点解析:本题考查输入输出流,从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作,cin是一个标准输入流类,open并不是输出流的一个成员函数。28、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。29、有如下程序#includeusingnamespacestd;classAA{charc;public:AA(charch):c(ch){cout<A、MCBB、BMCC、CMBD、BCM标准答案:C知识点解析:派生类构造函数的工作过程:1、派生类的构造函数在执行函数体之前,首先调用基类的构造函数初始化基类;2、基类构造完成之后,在执行函数体之前根据声明次序初始化自己的成员;3、执行自身函数体。由上可知,构造函数初始化列表并不指定初始化的执行次序。所以程序中在创建BB对象时,首先调用AA的构造函数,输出"C",然后初始化类BB中的成员对象m,m是AA类对象,调用AA的构造函数,输出"M",最后执行函数体,输出"B";输出顺序为:"CMB",答案为C。30、有如下类定义: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选项正确。31、已知数组arr的定义如下:intarr[5]={1,2,3,4,5};下列语句中输出结果不是5的是A、cout<<*arr+4<B、cout<<*arr+4<C、cout<D、cout<<*(arr+1)+5<标准答案:D知识点解析:程序定义含有五个整型元素的数组arr,并初始化为:1,2,3,4,5,数组名arr为数组首地址。选项A中输出第一个元素与4之和,即1+4,结果为5;选项B、C都是输出第五个元素5;选项D中输出第二个元素与5之和,即2+5,结果为7,D错误;答案为D。32、下列关于对象初始化的叙述中,正确的是A、定义对象的时候不能对对象进行初始化B、定义对象之后可以显式地调用构造函数进行初始化C、定义对象时将自动调用构造函数进行初始化D、在一个类中必须显式地定义构造函数实现初始化标准答案:C知识点解析:本题考查对象的定义和对象的初始化,定义对象时,自动调用构造函数,不需要显示调用,所以C选项正确。33、设c1和c2是类MyClass的对象,若将前缀运算符"--"和运算符"/"作为类MyClass的友元函数重载,则表达式--c1/c2等价于A、operator/(c1.operator--(),c2)B、operator/(operator--(c1),c2)C、c1.operator--().operator/(c2)D、c2.operator/(operator--(c1))标准答案:B知识点解析:友元函数不是类的成员函数,所以友元函数的调用不需要使用类对象;另外运算符重载不改变运算符的优先级,所以先执行"--"运算符重载函数,之后执行"/"运算符重载函数,选项A、C、D错误,B正确,答案为B。34、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。35、有如下函数模板:templateTsquare(Tx){returnx*x;}其中的参数T是A、函数形参B、函数实参C、模板实参D、模板形参标准答案:D知识点解析:参数T是模板形参,答案为D。36、若Pay是一个类名,则执行语句Payp1,p2[2],*p3;时Pay的构造函数被调用的次数是A、1B、2C、3D、4标准答案:C知识点解析:程序定义了Pay对象p1,Pay对象数组p2和Pay对象指针p3,编译器自动生成默认构造函数初始化p1对象和p2的两个对象元素;p3没有初始化,没有调用构造函数,答案为C。37、在公有继承的情况下,在派生类中能够访问的基类成员包括A、公有成员B、保护成员C、公有成员、保护成员和私有成员D、公有成员和保护成员标准答案:D知识点解析:在公有继承的情况下,基类中的私有成员对派生类不可见,公有成员和保护成员都保持自己的访问级别,派生类都可以访问,答案为D。38、有如下类声明: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。39、设数据结构B=(D,R),其中D={a,b,c,d,e,f}R={(f,A),(d,B),(e,D),(c,e),(a,c)}该数据结构为()。A、线性结构B、循环队列C、循环链表D、非线性结构标准答案:A知识点解析:数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了D中各数据元素之间的前后件关系,通常记为R。即一个数据结构可以表示成B=(D,R)。其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。例如,假设a与b是D中的两个数据,则二元组(a,b)表示a是b的前件,b是a的后件。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。根据上述理论,本题中f为根结点,每个结点有一个前件和一个后件,符合线性结构的定义。故本题答案为A选项。二、基本操作题(本题共1题,每题1.0分,共1分。)40、使用VC6打开考生文件夹下的源程序文件modi.cpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。程序输出:s1:n=20s2:n=10执行s3.add(s1,s2)s3:n=30s4:n=30注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。1#include2classTestClass3{4intn;5public:6TestClass(){)7TestCla8s(intm)8{9n=m;10}11//********error********12TestClassadd(TestClasss1,s2)13{14this->n=s1.n+s2.n;15//********error********16return(this);17}18voiddisp()19{20cout<<"n="<标准答案:(1)Testel.assadd(TestClasss1,TestClasss2)(2)return(*this);(3)};知识点解析:本题中的功能是设置类中的成员数值,然后利用成员函数add求和。从已定源程序的:main主函数开始入手,可以看出程序首先通过类TestClass中的成员函数实现题目中的输出要求。[解题思路](1)打开modil.cpp,调试程序,根据显示的错误提示,知道语句“TestClassadd(TestClasss1,s2)”中的变量“s2”没有声明类型,所以补充“s2”的类型,即“TestClassadd(1’estClasss1,TestClasss2)”。(2)“this.>n=s1.n+s2.n:”语句中的this变量为指针变量,所以第2个标识下的“return(this);”返回语句中的this变量,应该返回指针型,所以修改为“retum(*this);”。(3)C++中类的定义格式应为“class类名{};”,以分号为结尾,所以第3个标识下,类结尾处补充分号“;”,即修改为“};”。三、简单应用题(本题共1题,每题1.0分,共1分。)41、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数sum(intA[NUM][NUM],intn)的功能是计算矩阵中所有非质数数字的和。提示:函数isPrime(intn)的功能是判定当前数字是否为质数,如果是则返回true。注意:不能修改程序的其他部分,只能修改sum函数。试额程序:#include#include(cmath>#defineNUM50intA[NUM][NUM]={{1,3,5,7,9),{11,13,15,17,19),{21,23,25,27,29),{31,33,35,37,39),{41,43,45,47,49)};boolisPrime(intn){if(n==1)returnfalse;if(n==2)retUrntrue;for(inti=2;i(n/2;i++){if(n%i==0)returnfalse;}returntrue;}intsum(intA[NUM][NUM],intn){}intmain(){cout<标准答案:intre=0;for(inti=0;i(n;i++){for(intj=0;j(n;j++){if(!isPrime(A[i][j]))//判断是否是素数,不是素数则累加{re=re+A[i][j];}}}returnre:知识点解析:矩阵A[NUM][NUM]是二维矩阵,sum函数的参数n给出了矩阵A的具体维数,因此矩阵A中共含有n×n个有效数。A[NUM][NUM]中的元素可表示为A[i][j],其中i表示元素所在行数,j表示元素所在的列数,i、j分别从0到n-1范围内变化,因此设置内外两层循环可逐个遍历整个矩阵寻找非质数。函数isPrime提供了判断质数的方法,对每个元素A[i][j],调用函数isPrime(A[i][j]),判断函数的返回值是否为假,如果为假,说明不是质数,应该累加起来。四、综合应用题(本题共1题,每题1.0分,共1分。)42、请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,补充编制C++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doe类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。要求:补充编制的内容写在“//**********333**********”与“//**********66666**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。注意:程序最后已将结果输出到文件out.dat中,输出函数writeToFile已经给出并且调用。//proj3.epp#include#include#includeusingnamespacestd;classdoe{private:char*str;//文本字符串首地址intlength;//文本字符个数public://构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址doe(char*filename);voidreverse();//将字符序列反转~doe();voidwriteToFile(char*filename);};doe::doe(char*filename){ifstreammyFile(filename);intlen=1001,tmp;str=newchar[len];length=0;while((tmp=myFile.get())!=EOF){str[length++]=tmp;}str[length]=’\0’;myFile.close();}voiddoe::reverse(){//将数组str中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个//字符交换……//*************333***********//*************666***********}doe::~doe(){delete[]str;}voiddoe::writeToFile(char*filename){ofstreamoutFile(filename);outFile<标准答案:inti,j;//定义两个整数临时变量i.j.for(i=0,j=length-1;i知识点解析:题目要求将myDoc中的字符序列反转,在main函数中我们看到myDoc是doc类,根据doc类的定义可以知道它是把读取文件的字符串存到str动态数组中。reverse函数实现将数组str中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个字符交换,依次类推。使用变量i和j,分别表示第一个字符和最后一个字符的下标,定义temp作为中间变量进行交换。国家二级(C++)机试模拟试卷第3套一、选择题(本题共39题,每题1.0分,共39分。)1、下列语句中,错误的是()。A、constintbuffer=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);标准答案:B知识点解析:const是一个C++语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。B选项中没有初始化,C选项为指向常量的指针,定义时初始化与否均可,如果是const*doublepoint形式,则为常指针,必须在定义时进行初始化,A、C、D都正确。2、在C++语言中函数返回值的类型是由()决定的。A、调用该函数时系统临时B、return语句中的表达式类型C、定义该函数时所指定的函数类型D、调用该函数时的主调函数类型标准答案:C知识点解析:c++中函数return语句中返回的类型应与函数定义指定的类型一致,即函数定义的类型即为函数应返同的类型。3、关于函数重载,下列叙述中错误的是()。A、重载函数的函数名必须相同B、重载函数必须在参数个数或类型上有所不同C、重载函数的返回值类型必须相同D、重载函数的函数体可以有所不同标准答案:C知识点解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。4、假定MyClass为一个类,那么下列的函数说明中,()为该类的析构函数。A、void~MyClass():B、~MyClass(intn);C、MyClass();D、~MyClass();标准答案:D知识点解析:C++语言中析构函数为符号“~”加类名,且析构函数没有返回值和参数,故前不加void关键字。所以正确的形式应该是~MyClass()。5、程序执行后的输出结果是()。#includevoidmain(){charflag=‘c’;switch(flag){case‘a’:cout<<“1”<A、12B、23C、34D、45标准答案:C知识点解析:因为flag=’c’,所以执行cout<<"3"<6、要使程序执行后的输出结果为ABCD,应在横线处添加语句()。#includeusingnamespacestd;classA{public:A(){cout<<~A;}};classB:________{public:B0{cout<<’B’;}};classC:virtualpublicA{public:C(){cout<<’C’;)};classD:publicB,publicC{public:DO{cout<<’D’;}};voidmain(){Dobj;}A、publicAB、privateAC、protectedAD、virtualpublicA标准答案:D知识点解析:由主函数main入手,定义了类D对象obj。其中D为类B和C的公有继承,A是C的虚基类。题目中要求的输出结果为“ABCD”,依次为类A,类B,类C,类D中构造函数的输出语句。为了保证基类通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。7、有如下程序:#includeusingnamespacestd;classPoint{public:staticintnumber;public:Point(){number++;}~Point(){number--;}};intPoint::number=0;intmain(){Point*ptr;PointA,B;{Point*ptr_point=newPoint[3];ptr=ptr_point;}PointC:Cout<A、3B、4C、6D、7标准答案:C知识点解析:本题考查默认构造函数,题目中定义一个对象A、B以及对象数组Point[3],又定义了对象C,共执行6次构造函数,number变为了6,所以本题答案为C。8、在C++中,cin是一个()。A、类B、对象C、模板D、函数标准答案:B知识点解析:本题考查流对象cin,属于基础知识,cin是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为B。9、如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用()关键字来修饰。A、constB、staticC、voidD、class标准答案:D知识点解析:如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用class关键字来修饰。10、若有以下程序:#includeusingnamespacestd;classA{public:A(inti,intj){a=i:b=j;}voidmove(intx,inty){a+=X:b+=y;}voidshow(){cout<A、3,4B、6,8C、6,9D、4,3标准答案:C知识点解析:此题的执行过程如下:首先Bd(3,4);语句调用B类的构造函数:B(inti,intj),B的构造函数中调用基类A的构造函数,使得a=3,b=4;d.fun()会调用函数move(3,5),使得(3,4)和(3,5)的对应部分分别相加,最后输出6,9。11、两个或两个以上的模块之间关联的紧密程度称为()。A、耦合度B、内聚度C、复杂度D、连接度标准答案:A知识点解析:耦合度是模块间互相连接的紧密程度的度量:内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。12、有如下程序:#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选项正确。13、有如下类声明:classBase{protected:intamount;public:Base(intn=0):mount(n){}intgetAmount()const{returnmount;}};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。14、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。15、下列程序的执行结果为()。#includevoidmain(){inta=3.b=0;int*p=&a;b=+a++;cout<<*p<<","<A、3,4B、4,3C、3,4D、4,4标准答案:B知识点解析:*p为所指对象a的值,语句“b=+a++;”等价于“b=b+a;a=a+1;”。16、下列模板声明中,有语法错误的是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类型的,所以错误。17、下面程序的输出结果是()。#include#include“string.h”voidmain(){chara[]=“HelloTest”,b[]=“Test”;strcpy(a,b):cout<A、HelloB、TestC、HelloTestD、HelloTestHelloTest标准答案:B知识点解析:程序中首先定义字符数组a和b,其值分别为“HelloTest”和“Test”。然后利用strcpy复制函数,将b的值复制给a,所以输出a的结果为Test。18、下列运算符中,在C++语言中不能重载的是()。A、*B、>=C、::D、/标准答案:C知识点解析:不能被重载的运算符还包括:“.”、“.*”、“->*”和“?:”。19、下列语句中能正确定义变量的是()。A、constint*pNULL;B、constinty==99;C、constintx=0;D、constintz:100;标准答案:C知识点解析:const关键字用来定义常量,定义的同时必须完成初始化,而初始化需要使用赋值运算符指定初值,选项A没有初始化,错误;选项B使用关系运算符进行赋值运算,错误;选项D不是初始化语句,错误;选项C定义整型变量x为常量,值为0,正确,本题答案为C。20、已知表达式++x中的“++”是作为成员函数重载的运算符,则与++x等效的运算符函数调用形式为()。A、x.operator++(1)B、operator++(x)C、X.operator++()D、x.operator++(x)标准答案:C知识点解析:本题考查的是前缀自增运算符的重载。由于题意中“++”是作为成员函数重载的运算符,所以若要显式的调用该运算符,需要使用该类的对象加上“.”运算符,即x.operator++();又因为为了区分前缀运算符和后缀运算符,在调用后缀运算符时,需要给出一个整型实参值,而前缀运算符则不需要,所以++x等效的运算符函数调用形式为:x.operator++(),答案为C选项。21、一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是A、一对多B、一对一C、多对一D、多对多标准答案:A知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。实体运动队和队员的关系为1:m联系,故A选项正确。22、下列选项中不属于软件生命周期开发阶段任务的是()。A、软件测试B、概要设计C、软件维护D、详细设计标准答案:C知识点解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。23、堆排序最坏情况下的时间

温馨提示

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

评论

0/150

提交评论