版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(选择题)模拟试卷24(共9套)(共235题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共21题,每题1.0分,共21分。)1、下列关于成员函数特征的描述中,错误的是()。A、成员函数一定是内联函数B、成员函数可以重载C、成员函数可以设置参数的默认值D、成员函数可以是静态的标准答案:A知识点解析:因为成员函数可以在类体内定义,也可以在类体外定义,所以成员函数不一定都是内联函数;成员函数可以重载,可以设置参数的默认值,成员函数可以是静态的。2、设一棵完全二叉树共有700个结点,则此二叉树中的叶子结点数为()。A、85B、120C、250D、350标准答案:D知识点解析:①具有n个结点的完全二叉树的深度为[long2n]+1,计算出该完全二叉树的深度为10。②设度为0的结点(即叶子结点)为n0,度为1的结点为n1,度为2的结点为n2,总结点数为n,深度为k。n=n1+n2+n0,出于n0=n2+1则n2=n0一1,故n=n1+n0一1+n0=n1+2n0一1。由于完全二叉树中度为1的结点数只有两种可能:0或1。③假设度为1的结点数为0即满二叉树,根据满二叉树的定义,其2m一1个结点,根据以上计算所得的深度10来计算,应有210一1=1024一1=1023个结点,显然与题目中700个结点不符。因此,度为1的结点数必然为1。故n=n1+2n0一1=1+2n0一1=2n0,则n0=n/2=700/2=350.3、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。A、log2nB、n/2C、nD、n+1标准答案:C知识点解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。4、设某棵树的度为3,其中度为3、1、0的结点个数分别为3、4、15。则该树中总结点数为A、22B、30C、35D、不可能有这样的树标准答案:B知识点解析:本题采用画图法来求出结果。首先先画出包含3个度为3的结点;然后再添加4个度为1的结点,此时最大度为0的结点数为8。根据题目中描述的度为0的结点数有15个,这时要在书中添加度为2的结点,直到度为0的结点数位15。画图结束后,不管是什么样的树,总结点数都是30。5、某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是()。A、constvoidShow();B、voidconstShow();C、voidShow()const;D、voidShow(const);标准答案:C知识点解析:常成员函数的说明格式如下:<返回类型><成员函数名>(<参数表>)const;,所以对于本题来说无参且无返回值的常成员函数show,其正确的函数原型是选项C)。6、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和()。A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一般采用生命周期法,即把整个数据库应用系统的开发分解成目标独立的四个阶段。它们分别是需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段。7、在下列横线处应添加的语句是()。classBase{public:voidfun(){cout<<"Base::fun"<<endl;}};classDerived:publicBase{public:voidfun(){//显示调用基类的fun函数cout<<"Derived::fun"<<endl;}};A、Derived::funB、Base::fun();C、Pubic::funD、fun();标准答案:B知识点解析:此题考查的是成员函数的调用。因为横线处的作用是调用基类的fun函数,又因为派生类中也有fun()函数,所以必须对fun()函数加以限定,即Base::fun();。8、有如下程序#include<iostream>usingnamespacestd;intmain(){chara;cin>>a;if(a=’*’)cout<<"***"<<endl;elsecout<<"###"<<endl;return0;}输入字符+时,程序的运行结果是()。A、***B、###C、***###D、无输出标准答案:A知识点解析:本题的考点是双分支选择语句的执行流程,答题的关键点在于选择条件的判定。双分支选择语句的执行流程是首先计算if后表达式的值,如果表达式的值为非零,则执行if后面的分支,否则执行与其匹配的else后面的分支。本题执行时虽然输入变量a的值为‘+’,但是在执行if后括号内表达式(a=’*’)的时,由于此表达式为赋值表达式,因此表达式的值为赋值号右边的值’*’,其ASCII码的值非零,执行if后面的输出语句“***”后回车。9、有如下程序:#include<iostream>usingnamespacestd;intmain(){inti,s=0;for(i=1;s<20;i+=2)s+=i*i;cout<i<<end1;return0;}运行这个程序的输出结果是()。A、3B、5C、7D、9标准答案:C知识点解析:在这段程序中for循环共执行3次,每次循环变量i的值增2,在执行第三次循环语句时,变量s的值等于25,大于20而退出循环,此时再执行循环变量i加2运算,所以最后变量i的值等于7。10、要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,-88,0和0,则下列定义语句中错误的是()。A、intvect[]={30,50,-88};B、intvect[]={30,50,-88,0,0};C、intvect[5]={30,50,-88};D、intvect[5]={30,50,-88,0,0};标准答案:A知识点解析:此题考查的是一维数组定义时的初始化。当数组声明时没有给出数组的大小但是有初始化列表时,数组的大小就由列表中元素的个数来确定。所以选项A中数组只定义3个元素,不符合题目。11、定义学生选修课程的关系模式:SC(S#,Sn,C#,Cn,G)(其属性分别为学号、姓名、课程号、课程名、成绩)。则对主属性部分依赖的是A、S#→SnB、(S#,C#)→GC、(S#,C#)→S#D、(S#,C#)→C#标准答案:A知识点解析:关系模式SC中,学号是学生的唯一编码,姓名对主属性具有依赖。12、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assMyClass{public:MyClass(){++count;)~MyClass(){——count;)staticintgetCount(){retumcount;}private:staticintcount;};intMyClass::count0;intmain0{MyClassobj;cout<<obj.getCounto;MyClass*ptr=newMyClass;cout<<MyClass::getCount0;deleteptr;cout<<MyClass::getCount();return0;}程序的输出结果是()。A、121B、232C、221D、122标准答案:A知识点解析:此题考查的是静态成员。静态成员的特性是不管这个类创建了多少对象,它的静态成员都只有一个拷贝副本,这个副本被所有属于这个类的对象共享。题目中,首先定义了obj对象,其构造函数使静态数据成员count增l,故输出“1”;然后通过指针动态创建了MyClass类的对象,构造函数被再次调用,count变为2,输出“2”;接着删除创建的MyClass类的对象,调用析构函数,count减1变为1,输出“1”。故最终输出结果是121。13、有如下程序:#include<iostream>risingnamespacestd;classA{public:staticinta;voidinit(){a=1;}A(inta=2){int();a++;}.};intA::a=0;Aobj;intmain(){cout<<obj.a:return0;j}运行时输出的结果是()。A、0B、1C、2D、3标准答案:B知识点解析:此题实际考查的是变量作用域的屏蔽效应。在C++中,当标识符的作用域发生重叠时,在一个函数中声明的标识符可以屏蔽函数外声明的标识符或全局标识符。声明类A的全局对象时,构造函数首先调用int函数,但由于静态成员变量a被构造函数内部的形参a所屏蔽所以a++改变的是形参a的值,对静态成员变量a没有影响。14、下列有关类继承的叙述中,错误的是()。A、继承可以实现软件复用B、虚基类可以解决由多继承产生的二义性问题C、派生类构造函数要负责调用基类的构造函数D、派生类没有继承基类的私有成员标准答案:D知识点解析:此题考查的是类继承。派生类继承了基类的(全部数据成员,私有成员),只是基类的私有成员在派生类中是隐藏的,只能在基类内部访问,故选项D错误。15、某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是()。A、constvoidShow();B、voidconstShow();C、voidShow()const;D、voidShow(const);标准答案:C知识点解析:常成员函数的说明格式如下:<返回类型><成员函数名>(<参数表>)const;,所以对于本题来说无参且无返回值的常成员函数show,其正确的函数原型是选项C)。16、在下列枚举符号中,用来表示“相对于当前位置"文件定位方式的是()。A、ios—base::curB、ios—base::begC、iosbase::outD、iosbase::end标准答案:A知识点解析:C++流的定位方式(也就是指针移动方式)有三种,被定义为ios-base::seek_dir中的一组枚举符号:iosbase::beg相当于文件首;iosbase:cur相当于当前位置(负数表示当前位置之前);iosbase::end相对于文件尾。17、在一个派生类的成员函数中,试图调用其基类的成员函数"voidf();",但无法通过编译。这说明()。A、f()是基类的私有成员B、f()是基类的保护成员C、派生类的继承方式为私有D、派生类的继承方式为保护标准答案:A知识点解析:在派生类对基类的三种继承形式中,都无法对基类的私有成员访问A正确。在B中,三种继承方式都能访问基类的保护成员,故B不正确。C选项的情况在f()是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。同样D也不一定正确。18、有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfun1(){cout<<’’Base\n’’;}virtualvoidfun2(){cout<<’’Base\n’’;}};classDerived:publicBase{public:voidfun1(){cout<<’’Derived\n’’;}voidfun2(){cout<<’’Derived\n’’;}};voidf(Base&b){b.fun1();b.fun2();}intmain(){Derivedobj;f(obj);return0:}执行这个程序的输出结果是()。A、BaseBaseB、BaseDerivedC、DerivedBaseD、DerivedDerived标准答案:B知识点解析:此题考查的是虚函数的概念。在C++语言中,一个派生类的对象可以被它的任何一个基类的指针所指向,若基类和派生类中存在一模一样的成员函数。那么通过该基类指针调用这样的成员函数时,若这个成员函数被定义成虚函数,那么就调用派生类中的;否则就调用基类中的。本题中,在f()函数中,形参b是一个基类的引用,它引用的是主函数中定义的派生类对象obj,所以在调用fun1()时,运行的是基类的版本,而fun2()运行的是派生类的版本。19、已知在一个类体中包含如下函数原型:VOLUMEoperator-(VOLUME)const;下列关于这个函数的叙述中,错误的是()。A、这是运算符.的重载运算符函数B、这个函数所重载的运算符是一个一元运算符C、这是一个成员函数D、这个函数不改变类的任何数据成员的值标准答案:B知识点解析:此题考查的是运算符的重载。运算符“-”有一元和二元两种,在本题中它作为一个二元运算符,所以它不能更新对象的数据成员,也不能调用该类中没有const修饰的成员函数。20、下列有关抽象类和纯虚函数的叙述中,错误的是()。A、拥有纯虚函数的类是抽象类,不能用来定义对象B、抽象类的派生类若不实现纯虚函数,它也是抽象类C、纯虚函数的声明以“=0;”结束D、纯虚函数都不能有函数体标准答案:D知识点解析:此题考查的是抽象类和纯虚函数的概念。纯虚函数可以有函数体,它的实现由派生类给出。21、有如下程序#include#includeusingnamespacesta;intmain(){cout<A、setprecision(3)B、fixedC、setfill(ˊ*ˊ)D、setw(8)标准答案:D知识点解析:此题考查的是输出函数的格式控制。此题中,操作符setprecision的作用是设置浮点数的精度;fixed的作用是让浮点数按定点格式输出;setfill的作用是设置填充字符:setw的作用是设置输入输出的宽度,一次有效的设置。下划线处应填一个让34.567的输出宽度为8的操作符,即setw(8)。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共22题,每题1.0分,共22分。)1、由于常对象不能被更新,因此()。A、通过常对象只能调用它的常成员函数B、通过常对象只能调用静态成员函数C、常对象的成员都是常成员D、通过常对象可以调用任何不改变对象值的成员函数标准答案:A知识点解析:本题考查常对象的基本知识,常对象只能调用它的常成员函数,而不能调用非const函数,常对象的成员函数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。2、设循环队列的存储空间为Q(1:m),初始状态为front=rear=m。经过一系列正常的操作后,front=1,rear=m。为了在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为A、mB、m-1C、m-2D、1标准答案:C知识点解析:经过一系列正常的操作后,front=1,rear=m,那么最坏情况下需要的比较次数为rear-front-1=m-1-1=m-2。3、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};则下列说法中错误的是()。A、枚举常量YELLOW的值为1B、枚举常量RED的值为6C、枚举常量BLACK的值为10D、枚举常量WHITE的值为1标准答案:D知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum类型名{枚举值表)。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右分别与整数0、l、2、3…n—1对应:若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+l、m+2…对应,直到下一个赋了值的枚举值或结束。4、规范化主要为克服数据库逻辑结构中的插入异常,删除异常以及A、数据丢失的问题B、冗余度大的问题C、数据不一致的问题D、结构不合理的问题标准答案:B知识点解析:规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。5、已知函数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中的函数与原函数只是函数类型不同,而其他完全相同(参数个数及类型),则不能作为重载函数来使用。6、下列符号中不属于C++关键字的是()。A、friendB、namespaceC、continueD、byte标准答案:D知识点解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时用到的关键字;namespace是定义或使用名字空间时用到的关键字;continue是终止本次循环直接开始下一次循环所用到的关键字;byte是字节的意思,它不是C++语言中的关键字。7、有如下函数模板:templateTcast(Uu){returnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);标准答案:D知识点解析:此题考查的是模板函数的调用。本题中cast()函数的实参i只能确定模板参数u的类型为int,而不能确定另外一个模板参数T,故选项A、B错误:C++语言不允许隐式地将int转化为char*,故选项C错误。8、下列关于类和对象的叙述中,错误的是()。A、—个类只能有一个对象B、对象是类的具体实例C、类是对某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系标准答案:A知识点解析:此题考查的是类和对象的概念。类是用户定义的一种数据类型,可以使用这个类型来说明一个或多个变量,即对象。9、有如下程序:#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。10、有如下类定义:c1assB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){}};c1assD:publicB{protected:voidfun40{}};若obj是类D的对象,则下列语句中不违反访问控制权限的是()。A、obj.funl();B、obj.fun2();C、obj.fun3();D、obj.fun4();标准答案:A知识点解析:派生类D公有继承父类B.所以obj可以访问基类B的公有,不能访问其它成员。11、在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:如果一个类中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。12、通过运算符重载,可以改变运算符原有的()。A、操作数类型B、操作数个数C、优先级D、结合性标准答案:A知识点解析:此题考查的是运算符重载。运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。故本题选项A正确。13、有如下程序:#includeusingnamespacestd;classBoat;classCar{public:Car(inti):weight(i){)friendintTotal(constCar&c,constBoat&b);//①private:intweight;};classBoat{public:Boat(inti):weight(i){)friendintTotal(constCar&c,constBoat&b);private:intweight;};intTotal(constCar&c,constBoat&b){//②returnc.weight+b.weight;}intmain(){Carc(10);Boatb(8);cout<<"Thetotalweightis"<A、程序编译正确B、程序编译时语句①出错C、程序编译时语句②出错D、程序编译时语句③出错标准答案:A知识点解析:程序中定义了类car和类Boat,在两个类中分别定义他们的构造函数和友元函数衔end。程序在vC6.0中编译通过。14、下列关于模板形参的描述中,错误的是()。A、模板形参表必须在关键字template之后B、模板形参表必须用括弧()括起来C、可以用class修饰模板形参D、可以用typename修饰模板形参标准答案:B知识点解析:声明一个函数模板的格式是:template<<模板形参表声明>><函数声明>,其中的<模板形参表声明>是由一个或多个<模板形参>组成(如果是多个,需要用逗号隔开)。每个<模板形参>具有下面的几种形式:①typename<参数表>②class<参数名>③<类型修饰><参数名>由此可知,模板形参表必须用括弧<>括起来,而不是(),所以选项B)为正确答案。15、若MyTemp是一个只有一个虚拟类型参数的类模板,且有如下语句序列MyTemp<double>p2;MyTemp<long>p3[2];编译系统在处理上面的语句序列时,所生成的模板MyTemp的实例的个数是()。A、1B、2C、3D、0标准答案:C知识点解析:p2是一个double型的MyTemp,p3[2]是一个long型MyTemp数组,其中包括两个元素。所以共有3个MyTemp的实例。16、下列关于C++流的描述中,错误的是()。A、cout>>’A’表达式可输出字符AB、eof()函数可以检测是否到达文件尾C、对磁盘文件进行流操作时,必须包含头文件fstreamD、以ios_base::out模式打开的文件不存在时,将自动建立一个新文件标准答案:A知识点解析:Cout是一个标准输出流对象。>>称之为提取运算符,它的功能是从输入流中提取数据赋值给一个变量。<<为插入运算符,其功能是把表达式的值插入到输出流中。当系统执行cout<<x操作时,首先根据x值的类型调用相应的插入运算符重载器函数,把x的值传送给对应的形参,接着执行函数体,把x的值输出到显示器屏幕上,在当前屏幕光标位置处显示出来,然后返回ostream流,以便继续使用插入运算符输出下一个表达式的值。对于本题来说,要输出字符‘A’的值应该写成cout<’A’,因而选项A)是错误的。17、有如下类定义classAnimal{public:virtualvoidName0=0;};classKoala:publicAnimal{public:voidName(){/*函数体略*/)};关于上述类定义,下列描述中错误的是()。A、类Koala是类Animal的派生类B、类Koala中的Name函数是一个虚函数C、类Animal中的Name函数是一个纯虚函数D、语句“Animala;”能够建立类Animal的一个对象a标准答案:D知识点解析:在类Animal定义了纯虚函数Name(),所以类Animal就是一个抽象类,而抽象类是不能够建立对象的。18、已知一程序运行后执行的第一个输出操作是cout<<setw(10)<<setfill(’*’)<<1234;则此操作的输出结果是()。A、1234B、******1234C、**********1234D、1234******标准答案:B知识点解析:此题考查的是输入输出的格式控制。setw()控制的是输入输出的宽度;setfill()控制的是输出的填充字符。所以本题的输出结果是******1234。19、有如下的运算符重载函数定义:doubleoperator+(inti,intk){returndouble(i+k);}但定义有错误,对这个错误最准确的描述是()。A、+只能作为成员函数重载,而这里的+是作为非成员函数重载的B、两个int型参数的和也应该是int型,而这里将+的返回类型声明为doubleC、没有将运算符重载函数声明为某个类的友元D、C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符标准答案:D知识点解析:此题考查的是运算符的重载。C++语言规定,不能作为非成员函数重载的运算符有=、[]、()、->以及所有的类型转换运算符,故选项A错误;运算符重载对返回值类型没有限制,故选项B错误:C++并不强制要求非成员重载的运算符一定是某个类的友元,所以C选项错误;题目中重载的“+”运算符的两个参数都是int类型,而C++已经提供了求两个int型数据之和的运算符+,编译器无法区分应该调用哪一个,所以应该选择D选项。20、有如下程序:#include<iostream>Usingnamespacestd;ClassAmount{imamount;public;Amount(intn=0):amount(n){}IntgetAmount()const{returnamount;}Amount&operator+=(Amounta){amount+=a.amount;__________return}};intmain(){Amountx(3),y(7);x+=y;cout<<x.getAmount()<<endl;return0;}已知程序的运行结果是10,则下划线处缺失的表达式是()。A、*thisB、thisC、&amountD、amount标准答案:A知识点解析:此题考查的是“+”运算符重载和this指针。语句amount+=a.amount;实现3和7的求和得到amount=10,要使程序的输出结果为10,又因为函数的返回值类型为Amount&,所以横线处填入*this。21、有如下函数模板定义: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类型。22、下列关于函数模板的描述中,错误的是()。A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B、对于常规参数所对应的模板实参,任何情况下都不能省略C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D、模板参数表不能为空标准答案:D知识点解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若干参数,刚模板实参表中的那几个参数可以省略。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、下面叙述中正确的是()。A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:A知识点解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。2、若有定义语句“inti=2,j=3;”,则表达式i/j的结果是()。A、0B、0.7C、0.66667D、0.66666667标准答案:A知识点解析:由于变量i、j都是整型变量,所以两者相除所得的商也是整型数据。3、下列叙述中正确的是()。A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:在数据结构中,树这类的的数据结构只有一个根结点,但它不是线性结构。4、下列语句中,错误的是()。A、constintbuffer:256;B、constdouble,lcpoint:C、intconstbuffer:256;D、double*constpoint:标准答案:D知识点解析:const是一个C++关键字,用于限定不允许改变的变量。选项B是指向常量的指针,定义时可以不初始化;选项D是指针常量,定义时必须初始化。故答案为D。5、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)()。A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。6、面向对象方法中,继承是指()。A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。7、下面不属于软件工程的3个要素是A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程的3个要素是工具、过程和方法。8、有如下类定义:classAA{inta;public:AA(intn=0):a(n){}};classBB:public从{public:BB(intn)};其中横线处缺失的部分是()。A、:a(n)||B、:AA(n)||C、{a(n);|D、{a=n;}标准答案:B知识点解析:本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,所以本题答案为B。9、以下程序的输出结果是()。#include<iostream>usingnamespacestd;voidfun(char**q){++q;cout<<*q<<endl;)main(){stoicchar*s[]={"HI","HELLO","TEST"};char**p;p=s;fun(p);system("PAUSE");return0:}A、为空B、HIC、HELLOD、TEST标准答案:C知识点解析:由程序main主函数入手,调用fun函数,在fun函数中执行“cout<<*q<<endl;”语句实现程序输出。主函数中变量char*s[]为指针数组,char**p表示p指向的字符指针数据。*p就代表p指向的字符指针。语句“p=s;”表明p指向字符指针s,而**p则是s[]中的第一个字符串“HI”。主函数将变量p传值给函数fun(char**q)中的q,在函数体内部首先执行“++q”语句,就是将q的指针指向s中的下一个字符串,即“HELLO”,所以输出语句“cout<<*q<<endl:”输出该字符串值。10、有如下类说明:classTestClass{intx:public:TestClass(intn){x=n;}};classTestClass1:publicTestClass{inty;public:TestClass1(inta,intb);};在构造函数TestClass1的下列定义中,正确的是()。A、TestClass1::TestClass1(inta,intb):x(a),y(b){}B、TestClass1::TestClass1(inta,intb):TestClass(a),y(b){}C、TestClass1::TestClass1(inta,intb):x(a),TestClass1(b){}D、TestClass1::TestClass1(inta,intb1:TestClass(a),TestClass1(b){}标准答案:B知识点解析:题目中程序TestClass为基类,TestClass1为派生类,派生类构造函数的一般形式为:派生类构造函数名(总参数类表):基类构造函数名(参数列表){派生类中新增数据成员初始化语句}。派生类TestClass1的基类函数名为TestClass,总参数为inta,intb,所以选择B)。11、下面是一个模板声明的开始部分:templatedouble…由此可知()。A、这可能是一个函数模板的声明B、这可能是一个类模板的声明C、这既可能是一个函数模板的声明,也可能是一个类模板的声明D、这肯定是一个错误的模板声明标准答案:A知识点解析:本题考查函数模板和类模板的基础知识,从ternplatedouble这里就可以看出这是一个函数模板的声明。12、有如下类声明:classMyBASE{intk:public:voidset(intn){k=n;)intgetOconst{retumk;}};classMyDERIVED:protectedMyBASE{protected:intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intgetoconst{returnMyBASE::get0+j;}};则类MyDERIVED中保护的数据成员和成员函数的个数是()。A、4B、3C、2D、1标准答案:B知识点解析:此题考查的是派生与继承中的访问权限。protected派生:private->不可见:protected->priVate;public一>protected。13、当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是()。A、任何B、公有或保护C、保护或私有D、私有标准答案:B知识点解析:基类的公有成员和保护成员只有在以保护继承方式继承时,其在继承类中是保护成员。14、有如下程序段:inti=1,while(1){i++;if(i==10)break;if(i%2==0)cout<<’*’;}执行这个程序段输出字符*的个数是()。A、10B、3C、4D、5标准答案:C知识点解析:这段程序代码的功能是计算在1—10(包括10)之间偶数i的个数,如果整数i为偶数,则输出一个‘*’,共有4个偶数,所以共输出4个‘*’。15、字符串“a+b=12\n\t”的长度为()。A、12B、10C、8D、6标准答案:C知识点解析:题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8个字符。16、有如下定义:inta[5]={1,3,5,7,9},*p=a;下列表达式中不能得到数值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4标准答案:B知识点解析:此题考查的是指针引用数组元素。B选项中,a[3]是数组的第四个元素,即7;其它选项的引用均可得到5。17、关于函数重载,下列叙述中错误的是()。A、重载函数的函数名必须相同B、重载函数必须在参数个数或类型上有所不同C、重载函数的返回值类型必须相同D、重载函数的函数体可以有所不同标准答案:C知识点解析:此题考查的是函数重载。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。18、有如下程序#inc1ude<iostream>#inc1ude<iomanip>usingnamespacestd;classMyclass{public:Myclass(){cout<’A’;}Myclass(charc){cout<<c,}~Myclass(){cout<’B’;}};intmain(){Myclassp1,*p2;p2=newMyclass(’X’);deletep2;return0;}执行这个程序屏幕上将显示输出()。A、ABXB、ABXBC、AXBD、AXBB标准答案:D知识点解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题中,主程序在创建MayClass类的对象pl时,调用MayClass类的默认构造函数,输出字母A;然后在创建*p2对象时,调用带字母参数的构造函数,输出字母X;语句deletep2;调用析构函数,输出字母B;在主函数退出时,调用析构函数清除对象p1,输出字母B。19、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assPart{public:Part(intx=0):val(x){cout<<val;}~Part0{cout<<val;)private:intval,};c1assWhole{public:Whole(intx,inty,intz=0):p2(x),p1(y),val(z){cout<<val;)~Whole(){cout<<val;}private:Partp1,p2;intval;};intmain(){Wholeobj(1,2,3);return0;}程序的输出结果是()。A、123321B、213312C、213D、123123标准答案:B知识点解析:此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序,最后执行自身的构造函数。析构顺序与之相反。本题中,Whole类中有两个Part类的成员p1和p2,根据它们定义的顺序,先构造p1再构造p2。所以,首先被构造的是p1(y),输出2;第二个被构造的是p2(x),输出1;最后调用析构函数,输出val的值3;析构函数调用顺序与构造函数相反。故最后输出213312。20、有如下程序:#includeusingnamespacestd;classBook{public:Book(char*t=""){strcpy(title,t);}____________private:chartitle[40];};classNovel:publicBook{public:Novel(char*t=""):Book(t){}char*Category()const{return"文学";}};intmain(){Book*pb;pb=newNovel();cout<Category();return0;若程序运行时输出结果是“文学”,则划线处缺失的语句是()。A、char*Category();B、char*Category()const;C、virtualchar*Category()const;D、virtualchar*Category()const=0;标准答案:D知识点解析:根据程序运行的结果为:文学,说明程序执行了派生类Novel中的成员函数*Category()const{return"文学";},所以在基类Book中要把函数*Categorv()const定义为纯虚函数。21、有如下程序#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选项。22、下列运算符中,不能被重载的是()。A、&&B、!=C、.D、++标准答案:C知识点解析:此题考查的是运算符重载。在C++中,只有.、.*、->*、::?:这五个运算符不能重载。23、已知将运算符“+”和“*”作为类Complex的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于()。A、c1.operator*(c2.operator+(c1))B、c1.operator+(c2.operator*(c1)C、c1.operator*(c1.operator+(c2))D、c2.operator+(c1.operator*(c1)标准答案:B知识点解析:表达式cl+c2*cl的含义是cl加上c2与cl的积。24、已知基类Employee只有一个构造函数,其定义如下:Employee::Employee(intn):id(n){}Manager是Employee的派生类,则下列对Manager的构造函数的定义中,正确的是()。A、Manager::Manager(intn):id(n){}B、Manager::Manager(intn){id=n;}C、Manager::Manager(intn):Employee(n){}D、Manager::Manager(intn){Employee(n);}标准答案:C知识点解析:基类的构造函数是带有参数的,派生类从基类派生,这就需要在派生类的构造函数名后面显示的调用基类的构造函数。25、下列控制对齐方式的操作符中,错误的是()。A、internalB、centerC、leftD、right标准答案:B知识点解析:对齐方式的控制操作符left的含义是在设定的宽度内左对齐输出,右端填己设定的填充字符;right(此为默认设置)在设定的宽度内右对齐输出:internal在设定的宽度内右对齐输出,但若有符号(一或+),符号置于最左端。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共33题,每题1.0分,共33分。)1、以下程序的执行结果是()。#include<iostream.h>intfun(intb[],intn){inti,r=1;for(i=0;i<n;i++)r=r*b[i];returnr;}voidmain(){intx,a[]={1,2,3,4,5,6,7,8};x=fun(a,3);cout<<x<<end1;}A、5B、6C、7D、8标准答案:B知识点解析:由程序的main函数入手,调用fun函数,其中参数为数组a和3。fun函数的功能是for循环中由第一个数组元素开始到第三个元素进行累积。2、下列各组类型声明符中,含义相同的一组是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int标准答案:B知识点解析:此题考查的是基本类型和派生型。C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。本题A选项中,unsignedlongint的省略形式为unsignedlong:选项B中,signedshortint的省略形式是short;选项C中,unsignedshort的省略形式是unsignedshort;选项D中,shortint的省略形式是short。3、若X和v是程序中的两个整型变量,则下列if语句中正确的是()。A、if(x=0)y=l;elsey=2;B、if(x=0)theny=lelseY=2;C、if(x=0)y=lelsey=2;D、if(x==0)y=1;elsey=2;标准答案:A知识点解析:ifelse语句的彤式为:if(<条件>)<语句1>else<语句2>所以符合以上形式的ifelse语句为选项A)。4、下列对于线性链表的描述中正确的是()。A、存储空间不一定连续,且各元素的存储顺序是任意的B、存储空间不一定连续,且前件元素一定存储在后件元素的前面C、存储空间必须连续,且前件元素一定存储在后件元素的前面D、存储空间必须连续,且各元素的存储顺序是任意的标准答案:A知识点解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。5、数据结构主要研究的是数据的逻辑结构、数据的运算和()。A、数据的方法B、数据的存储结构C、数据的对象D、数据的逻辑存储标准答案:B知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。6、下面叙述中错误的是()。A、软件测试的目的是发现错误并改正错误B、对被调试的程序进行“错误定位”是程序调试的必要步骤C、程序调试通常也称为DebugD、软件测试应严格执行测试计划,排除测试的随意性标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。软件测试要严格执行测试计划,排除测试的随意性。程序调试通常也称Debug,对被调试的程序进行“错误”定位是程序调试的必要步骤。7、有如下类定义:classMyClass{Intvalue;public;MyClass(intn):value(n){}intgerValueoconst{returnvalue;)};则类MyClass的构造函数的个数是()。A、1个B、2个C、3个D、4个标准答案:A知识点解析:此题考查的是构造函数的概念。构造函数的名字必须与类名相同:构造函数不指定返回值类型;构造函数可以重载;在创建对象时,系统会自动调用构造函数。8、有如下程序:#includeusingnamespacestd;classVAC{public;intf()const{return3;)intf(){return5;)};Intmain(){VACv1;constVACv2;cout<A、53B、35C、55D、33标准答案:A知识点解析:此题考查的是常成员函数的应用。VAC类中说明了两个函数,一个是常成员函数,一个是普通函数:在主函数中说明了两个对象,通过普通对象vl调用的是普通函数,输出5;通过常对象v2调用的是常成员函数,输出3。9、有如下程序:#include<iostream>usingnarnespacestd;classA{public:AO{cout<<’’A’’;}};classB{public:B(){cout<<’’B’’;}};classC:publicA{Bb:public:C(){cout<<’’C’’;}};intmain(){Cobj;return0:}执行后的输出结果是()。A、CBAB、BACC、ACBD、ABC标准答案:D知识点解析:此题中,语句Cobj对象初始化首先调用基类的构造函数A(),输出“A”,其次是C类中对象的构造函数的调用,即调用BO,输出“B”;最后是调用自身的构造函数C(),输出“C”。10、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式包括概念模式、外模式和内模式(物理模式)。11、—个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程间的联系是()。A、1:1联系B、1:m联系C、m:1联系D、m:n联系标准答案:D知识点解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程的联系是多对多的联系。12、若PAT是一个类,则程序运行时,语句“PAT{*ad}[3];”调用PAT的构造函数的次数是(A、0B、1C、2D、3标准答案:A知识点解析:语句“PAT(*ad)[3]”定义了含有3个元素的指向类PAT。类型的指针数组ad。13、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、投影D、并标准答案:A知识点解析:选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。投影也是单目运算,该运算从表中选出指定的属性值组成一个新表。自然连接是一种特殊的等价连接,它将表中有相同名称的列自动进行记录匹配。自然连接不必指定任何同等连接条件。14、在函数中,可以用auto、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。A、autoB、extemC、registerD、static标准答案:A知识点解析:此题考查的是存储类型。C++语言变量的存储类型分为如下几种类型:auto---函数内部的局部变量;static…静态存储分配;extern---全局变量;register---变量存储在硬件寄存器中。15、下列关于派生类和基类的描述中,正确的是()。A、派生类成员函数只能访问基类的公有成员B、派生类成员函数只能访问基类的公有和保护成员C、派生类成员函数可以访问基类的所有成员D、派生类对基类的默认继承方式是公有继承标准答案:B知识点解析:派生类不论是采用那种继承方式继承基类,它的成员函数只能访问基类的公有成员和保护成员。16、下列定义语句中,错误的是()。A、intpx*;B、char*acp[10];C、char(*pac)[10];D、int(*p)();标准答案:A知识点解析:指针变量声明的一般形式为:<数据类型>*<变量名>,在选项A中,*放在变量名的后面,所以是错误的。17、下面模型中为概念模型的是A、网状模型B、层次模型C、关系模型D、实体一联系模型标准答案:D知识点解析:概念模型足对真实世界中问题域内的事物的描述,不是对软件设计的描述。概念数据模型是面向用户、面向现实世界的数据模型,是与DBMS无关的。它主要刖来描述一个单位的概念化结构。实体关系模型(EntityRelationshipDiagram)地理信息系统术语,该模型直接从现实世界中抽象出实体类型和实体间联系,然后用实体联系图(E-R图)表示数据模型,是描述概念世界,建立概念模型的实用工县。层次模型是指辟{一颗“有向树”的数据结构来表示表示各类实体以及实体间的联系,树中每一个结点代表一个记录类型,树状结构表示实体型之间的联系。层次模型是最早用于商品数据库管理系统的数据模型。18、要定义一个引用变量p,使之引用类Myclass的一个对象,正确的定义语句是()。A、Myclassp=Myclass;B、Myclassp=newMyclass;C、Myclass&p=newMyclass;D、Myclassa,&p=a;标准答案:D知识点解析:在选项D)中,定义了MyClass类的一个对象a和引用变量p,并且声明p初始化为对a的引用。19、Samp1e是一个类,执行下面语句后,调用Samp1e类的构造函数的次数是()。Samp1ea[2],*P=newSamp1e;A、0B、1C、2D、3标准答案:D知识点解析:在C++中,声明一个类对象时,编译程序需要调用类的构造函数为对象分配存储空间,进行必须的初始化。在本题的这条语句中,声明了一个Samp1e类型的包含2个数组元素的数组a[2],一个指向类Samp1e对象的指针P,所以Samp1e类的构造函数共调用了3次。20、有如下语句序列:ifstreaminfile("DATA.DAT");if(infile.good())eout<<"A";else{cout<<"B";ofstreamoutfile("DATA.DAT");if(outfile.fail())cout<<"C";elsecout<<"D";}若执行这个语句序列显示的是BD,则说明文件DATA.DAT()。A、以读方式打开成功B、以读方式打开失败,但以写方式打开成功C、以读方式打开失败,以写方式打开也失败D、以读方式打开成功,以写方式打开也成功标准答案:B知识点解析:由这个语句序列显示的结果是BD,说明执行了cout<<"B"和eout<<"D"语句。21、某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是()。A、constvoidShow();B、voidconstShow();C、voidShow()const;D、voidShow(const);标准答案:C知识点解析:常成员函数的说明格式如下:<返回类型×成员函数名>(<参数表>)const;,所以对于本题来说无参且无返回值的常成员函数show,其正确的函数原型是选项C)。22、有如下类声明:classFoo{intbar;};则Foo类的成员bar是()。A、公有数据成员B、公有成员函数C、私有数据成员D、私有成员函数标准答案:C知识点解析:此题考查的是类的定义。在定义类的成员变量时,如果没有使用关键字;所有成员默认定义为private私有权限。23、在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();”,但无法通过编译。这说明()。A、f()是基类的私有成员B、f)是基类的保护成员C、派生类的继承方式为私有D、派生类的继承方式为保护标准答案:A知识点解析:在派生类对基类的三种继承形式中,都无法对基类的私有成员访问A正确。在B中,三种继承方式都能访问基类的保护成员,故B不正确。C选项的情况在f)是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。同样D也不一定正确。24、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){cout<<’*’;}MyClass(MyClass&a){cout<<’#’;}~MyClass(){cout<<’@’;}};intmain();MyClassa;Myclassb(a);return0:}运行时的输出结果是()。A、*@#@B、#@*@C、*#@@D、#*@@标准答案:C知识点解析:程序在执行时,先创建类对象a,输出*,再创建类对象b,输出#,然后再依次调用类对象b和a的析构函数,输出两个25、下列关于运算符重载的叙述中,正确的是()。A、通过运算符重载,可以定义新的运算符B、有的运算符只能作为成侵函数重载C、若重载运算符+,则相应的运算符函数名是+D、重载一个二元运算符时,必须声明两个形参标准答案:B知识点解析:此题考查的是运算符重载。C++中,“=”、“[]”、“()”、“一>”以及所有的类型转换符只能作为成员函数重载,故B选项正确;运算符重载只是赋予已有的运算符多重含义,并不是定义新的运算符;运算符函数的函数名就是在运算符前加上关键字operator。26、有如下类定义classMyClasspublic:______________Private:intdata;};若要为MyClass类重载流输入运算符>>,使得程序中可以“cin>>obj;”形式输入MyClass类的对象obi,则横线处的声明语句应为()。A、friendistream&operator>>(istream&is,MyClass&a);B、friendistream&operator>>(istream&is,MyClassa);C、istream&operator>>(istream&is,MyClass&a);D、istream&operator>>(istream&is,MyClassa);标准答案:A知识点解析:C++的输入运算符>>作为非类成员函数重载。在一个类中,可将输入运算符>>声明为友元函数,在类MyClass重载输入运算符>>的形式如选项A)所示。27、有如下程序:#include<iostream>usingnamespacestd;classPair{intm;intn;public:Pair(inti,intj):m(i),n(j){}booloperator>(PairP)const;//须在类体外给出定义};intmain(){Pairp1(3,4),p2(4,3),p3(4,5);cout<<(p1>p2)<<(p2>p1)<<(p2>p3)<<(p3>p2);return0;}运算符函数。perator>的功能是比较两个Pair对象的大小当左边对象大时,返回ture,否则返回false。比较规则是首先比较两对象的m成员,m大者为大:当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是()。A、boolPair::operator>(Pairp)const{if(mt=p.m)returnm>p.m;returnn>p.n;}B、boolPair::operator>(Pairp){if(m!=p.m)returnm>p.m;returnn>p.n;}C、boolPair::operator>(Pairp)eonst{if(m>p.m)returntrue;returnn>p.n;}D、boolPair::operator>(Pairp){if(m>p.m)returntrue;returnn>p.n;}标准答案:A知识点解析:按照比较规则:首先比较两对象的m成员,m大者为大:当m相等时比较n,n大者为大。这条规则的用C++写出来就是选项A。28、有类定义如下:classType{public:Type(inti=0);Typeoperator-(int);friendTypeoperator+(Type,Type);private:intval;};若有对象定义Typec1;则下列语句序列中,错误的是()。A、Type(3)+c1;B、c1+Type(3);C、3-c1;D、c1-3:标准答案:C知识点解析:由于在类Type中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3是正确的,而3-c1是错误的表达式。29、若为Fraction类重载前增1运算符++,应在类体中将其声明为()。A、Fraction&operator++();B、Fraction&operator++(int);C、friendFraction&operator++();D、friendFraction&operator++(int);标准答案:A知识点解析:在类Fraction中重载前增1运算符++时,其声明形式为Fraction&operator++();在类Fraction中重载后增1运算符十+时,其声明形式为Fraction&operatorH(int);。30、在一个派生类对象结束其生命周期时()。A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果基类没有定义析构函数,则只调用派生类的析构函数D、如果派生类没有定义析构函数,则只调用基类的析构函数标准答案:A知识点解析:此题考查的是派生类对象的析构。释放派生类对象时,析构函数的执行顺序是:首先调用派生类自身的析构函数;然后调用类成员对象的析构函数;最后调用基类的析构函数。所以四个选项中只有选项A正确。31、下列关于函数模板的描述中,正确的是()。A、函数模板是一个实例函数B、使用函数模板定义的函数没有返回类型C、函数模板的类型参数与函数的参数相同D、通过使用不同的类型参数,可以从函数模板得到不同的实例函数标准答案:D知识点解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。32、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是()。A、fstreamB、istrearaC、ostreamD、iomanip标准答案:D知识点解析:要使用setw、fixed等操作符,须包含iomanip这个文件。33、下列关于函数模板的描述中,正确的是()。A、函数模板是一个实例函数B、使用函数模板定义的函数没有返回类型C、函数模板的类型参数与函数的参数相同D、通过使用不同的类型参数,可以从函数模板得到不同的实例函数标准答案:D知识点解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共34题,每题1.0分,共34分。)1、数据结构主要研究的是数据的逻辑结构、数据的运算和()。A、数据的方法B、数据的存储结构C、数据的对象D、数据的逻辑存储标准答案:B知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。2、一棵二叉树的前序遍历结果是ABCEDF,中序遍历结果是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度七源知识产权商业秘密许可合同
- 2024年度企业销售激励机制劳动合同
- 2024年度汽车销售退货政策合同3篇
- 2024年度智能医疗系统开发及部署合同
- 2024年度艺人经纪合同-影视行业
- 2024年度供应链管理咨询合作协议
- 2024年度白酒生产原料采购合同
- 2024年度甲乙双方关于纺织工厂建设的借款合同
- 2024布草洗涤服务合同完整版
- 2024年度联合研发项目保密协议
- 北京市第十届迎春杯小学数学竞赛决赛试卷
- 机器学习与大数据分析在制造业产品创新中的应用
- 项目验收文档清单(集成类)
- 血管外科手术介入治疗基础知识课件
- 构建小区和谐重要性
- 23331-2020能源管理体系要求及使用指南
- “玩工”与“玩乐劳动”:数字资本主义的游戏形式、同意制造与价值剥削
- ISO9001 2015版质量管理体系标准
- 影视鉴赏高职PPT完整全套教学课件
- 学而不思则罔-初中期中考试总结主题班会课件
- 石河子大学辅导员考试题库
评论
0/150
提交评论