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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷36(共9套)(共203题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共21题,每题1.0分,共21分。)1、算法的空间复杂度是指A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法的空间复杂度是指执行这个算法所需要的内存空间。这个内存空间包括算法程序所占的空间,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。2、算法的有穷性是指()。A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。3、一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、1,2,3,A,B,CB、C,B,A,1,2,3C、C,B,A,3,2,1D、1,2,3,C,B,A标准答案:C知识点解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是CBA321。4、在对函数进行原型声明时,下列语法成分中,不需要的是()。A、函数返回类型B、函数参数列表C、函数名D、函数体标准答案:D知识点解析:在c十+中函数在使用之前要预先声明,这种声明在标准C++中称为函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类型。5、下列有关运算符重载的叙述中,正确的是()。A、运算符重载是多态性的一种表现B、C++中可以通过运算符重载创造新的运算符C、C++中所有运算符都可以作为非成员函数重载D、重载运算符时可以改变其结合性标准答案:A知识点解析:重载运算符的规则如下:①c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;②c++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为A。6、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为c。7、下列描述中正确的是A、程序就是软件B、软件开发不受计算机系统的限制C、软件既是逻辑实体,又是物理实体D、软件是程序、数据与相关文档的集合标准答案:D知识点解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是包括程序、数据及相关文档的完整集合。软件由两部分组成:一部分是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件具有以下六个特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。⑤软件复杂性高,成本昂贵。⑥软件的开发涉及渚多社会因素。8、在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的()。A、连接码B、关系码C、外码D、候选码标准答案:D知识点解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。9、建立一个有成员对象的派生类对象时,各构造函数体的执行次序为()。A、派生类、成员对象类、基类B、成员对象类、基类、派生类C、基类、成员对象类、派生类D、基类、派生类、成员对象类标准答案:C知识点解析:建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造函数,调用的顺序按照基类被继承时候的顺序(白左阳右)。然后是执行成员对象的构造函数,调用顺序按照各个成员对象在类中的声明顺序(自上而下),最后是执行派生类的构造函数。10、有如下语句序列:charstr[10];cin>>str;当从键盘输入"Ilovethisgame"时,str中的字符串是()。A、IlovethisgameB、IlovethiC、IloveD、I标准答案:D知识点解析:由于字符\0作为字符串的结束标志,所以当从键盘上输入“Ilovethisgame”时,只把字母I输入字符串str。11、有如下程序:#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。12、有如下类定义:ciassA{char*a;public:A():a(0){}A(char*aa){∥把aa所指字符串拷贝到a所指向的存储空间a=___;strcpy(a,aa);}~A()(delete[]a;}};横线处应填写的表达式是()。A、newchar[strlen(aa)+1]B、char[strlen(aa)+1]C、char[strlen(aa)]一D、newchar[sizeof(aa)一1]标准答案:A知识点解析:函数strlen(aa)返回字符串aa中字符的个数,不包括末尾的空字符。所以在内存空间创建字符数组a时,需要字符数组的长度是strlen(aa)+1。13、若一个函数的原型为“int*Xfun1(intx,int&y,charz);”,则该函数的返回值类型为()。A、int*B、intC、int&D、char标准答案:A知识点解析:由“int*Xfunl(intx,int&y,charz);”的定义可知,其返回值为指向int指针的函数。14、下列函数原型声明中,错误的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n);标准答案:C知识点解析:在C++中,函数在使用之前要预先声明。这种声明在标准C++中称为函数原型,函数原型给出了函数名、返回类型以及在调用函数时必须提供的参数个数和类型。其语法为:<返回类型><函数名>(<形参列表>);使用函数原型说明有两种形式:①直接使用函数定义的头部,并在后面加上一个分号;②在函数原型说明中省略参数列表中的形参变量名,仅给出函数名、函数类型、参数个数及次序。在选项C中,给出了形参变量m的初值。15、若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:C1、*C2、C3是3个MyClass对象,C4是MyClass对象的引用,它是对象C1的别名。16、有如下类定义:classSample{public;Sample(intx):ref(x){}//①private:Sample():ref(0){}//②staticintval=5;//③constintref;//④};上述程序段中,错误的语句是()。A、①B、②C、③D、④标准答案:C知识点解析:静态整型数据不能定义为类的数据成员。17、已知函数f的原型是“voidf(int*x,int&y);”,变量v1、v2的定义是“intv1,v2;”,下列调用语句中,正确的是()。A、f(v1,v2);B、f(v1,&V2);C、f(&v1,v2);D、f(&v1,&v2);标准答案:C知识点解析:在函数f的形参表达式中第一个形参为整型指针变量,第二个为整型引用变量,所以用实参v1的指针初始化第一个形参,用实参v2初始化第二形参。18、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assSamp1e{friendlongfun(Samp1es);public:Samp1e(longa){x=a;}private:longx;);longfun(Samp1es){if(s.x<2)return1:returns.x*fun(Samp1e(s.x—1)):}intmain(){intsum=0;for(int1=0;1<6;1++){sum+=fun(Samp1e(i));}cout<<sum,returnO;}运行时输出的结果是()。A、120B、16C、154D、34标准答案:C知识点解析:此题考查的是友元函数和递归函数。因为fun函数是Samp1e类的友元函数,所以fun函数可以直接访问Samp1e类对象的私有成员x。主函数调用fun函数,构造参数为0~5。当n小于2时,fun函数返回1,其余返回值为n*fun(n—l)。n取0—5的值时fun(n)依次为1,1,2,6,24,120,累加结果为154。19、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类标准答案:D知识点解析:此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项A和B错误;公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项C错误。20、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:C++引入内联函数的原因是用它来取代C中盼预处理宏函数。两者的区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现的。内联函数在调用时像宏函数一样展开,所以它没有一般函数的参数压栈和退栈操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。21、下列关于运算符重载的描述中,正确的是()。A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B、一元运算符只能作为成员函数重载C、二元运算符重载为非成员函数时,参数表中有一个参数D、C++中可以重载所有的运算符标准答案:A知识点解析:此题考查的是运算符的重载。运算符重载为成员函数时,形参个数~般为运算符元数减1;重载为非成员函数时,形参个数一般和运算符元数相等。所以二元运算符重载为非成员函数时,参数表中应有两个参数,C选项错误:运算符重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A正确:一元运算符中,“.”(取负)、“++”、“..”等均可重载为成员函数:C++语言中,“.”、“.*”、“一>*”、“::”、“?:”五个运算符不能重载。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共22题,每题1.0分,共22分。)1、一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是()。A、1,2,3,A,B,CB、C,B,A,1,2,3C、C,B,A,3,2,1D、1,2,3,C,B,A标准答案:C知识点解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是CBA321。2、下列有关内联函数的叙述中,正确的是()。A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句标准答案:C知识点解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换,所以它没有一般函数的参数压栈和退栈操作,所以选项A错误;即使没有使用inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B错误;内联函数只是比普通函数有更高的执行效率。3、在软件开发中,需求分析阶段产生的主要文档是()。A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:在软件开发过程中,需求分析阶段产生的主要文档是软件需求规格说明书。4、下列描述中正确的是()。A、软件测试的主要目的是发现程序中的错误B、软件测试的主要目的是确定程序中错误的位置C、为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D、软件测试是证明软件没有错误标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。为了达到好的测试效果,应该由独立的第三方来构造测试,程序员应尽量避免检查自己的程序。5、有如下程序:#includeusingnamespacestd;className{charname[20];public:Name(){strcpy(name,"");cout<<‘?’;}Name(char*fname){strcpy(name,fname);cout<<‘?’;)};intmain(){Namenames[3]={Name("张三"),Name("李四")};return0:}运行此程序输出符号?的个数是()。A、0B、1C、2D、3标准答案:D知识点解析:类Name有两个构造函数,在默认构造函数中,给字符数组。Flame赋窄值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,Flame[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出j个“?”符号。6、下列描述中错误的是()。A、在数据库系统中,数据的物理结构必须与逻辑结构一致B、数据库技术的根本目标是要解决数据的共享问题C、数据库设计是指在已有数据库管理系统的基础上建立数据库D、数据库系统需要操作系统的支持标准答案:A知识点解析:在数据库系统中,物理独立性是指数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。7、有如下两个类定义:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubleyl;protected:doubley2;public:doubley3;};在类YY中保护成员变量的个数是()。A、1B、2C、3D、4标准答案:C知识点解析:本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员x2、x3变成了保护成员,派生类中的y2也是保护成员所以共有3个保护成员。本题答案为C。8、有如下程序:#includeusingnamespacestd;classBase{private:voidfunl0const{cout<<“funl”;)protected:voidfun2()const{cout<<“fun2”;)public:voidfun3()const{cout<<“fun3”;)};classDerived:protectedBase{public:voidfun40const{cout<<“fun4”;)};intmain(){Derivedobj;obj.funl();∥①obj.fun2();∥②obj.fun3();∥③obj.fun4();∥④return();)其中有语法错误的语句是()。A、①②③④B、①②③C、②③④D、①④标准答案:B知识点解析:此题考查的是保护继承。因为Derived以protected方式继承了Base类,所以父类Base中的公有成员和保护成员均成了Derived类的保护成员,而Base类的私有成员Derived类不可访问。所以,主函数中通过Derived类的对象只能够访问到Derived类的公有成员。9、程序调试的任务是()。A、设计测试用例B、验证程序的正确性C、发现程序中的错误D、诊断和改正程序中的错误标准答案:D知识点解析:程序调试的任务是诊断和改正程序中的错误。10、有如下程序段:inti=5;while(inti=0){cout<<’*’;i--;}运行时输出“*”的个数是()。A、0+B、1C、5D、无穷标准答案:A知识点解析:因为while循环中,因为i的值等于0,所以while循环体一次也不执行。因而运行时输出“*”,的个数是0。11、有如下程序:#includeusingnamespacestd;classB{public:virtualvoidshow(){cout<<“B”;});classD:publicB{public:voidshow(){tout<<“D”;));voidfun1(B*ptr){ptr->show();)voidfun2(B&ref){ref.showO;}voidfun3(Bb){b.show();)intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);returnO:}程序的输出结果是()。A、BBBB、BBDC、DBBD、DBD标准答案:C知识点解析:此题考查的是虚函数与多态性。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数;在c++中,一个基类指针可以用于指向它的派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的对象类的那个重定义版本。此题中,funl()和fun2()的形参分别是基类的指针和引用,给funl()传入的实参是指向派生类对象的指针p,funl()将调用D类中的show()输出字符‘D’;给fun2()出入的实参是基类对象,fun2()调用类B中的show()输出字符‘B’;fun3()由于形参是基类对象,调用的始终都是基类的show(),输出字符‘B’。故最终输出结果是DBB。12、下列有关内联函数的叙述中,正确的是()。A、内联函数在调用时发生控制转移B、内联函数必须通过关键字inline来定义C、内联函数是通过编译器来实现的D、内联函数函数体的最后一条语句必须是return语句标准答案:C知识点解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样的展开,将调用表达式用内联函数体来替换所以它没有一般函数的参数压栈和和退栈操作,所以选项A错误;即使没有使用inline说明,编译器也会将在类的说明部分定义的函数认定为内联函数,所以选项B错误;内联函数只是比普通函数有更高的执行效率,所以选项D错误。13、在下列字符中,不允许作为C++标识符的是()。A、bB、BC、_D、2标准答案:D知识点解析:C++的标识符是一个以字母或下划线开头的,由字母、数字、下划线组成的字符串。14、下列语句中,与语句“1n=(a>b?(1)>c?1:0):0);”的功能等价的是()。A、if(a<=b)n=0;B、if((a>b)Il(b>c))n=1;elsen=0;C、if(a>b)if(b>c)n=1:elsen=0;elsen=0;D、if(a>b)n=1;elseif(<=c)n=1;elseif(b>c)n=1;elsen=0;标准答案:C知识点解析:条件表达式(a>b?(b>c?1:0):0)的含义是,如果a>b成立,则此表达式的值等于条件表达式(b>c?1:0)的值,否则其值等于0。而条件表达式(b>c?1:0)的含义是,如果b>c成立,其值等于1,否则其值等于0。15、若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test.txt文件的是()。A、ifstreamfin;fin.open("d:\\test.txt",ios_base∷in);B、fstreamrio;fio.open("d:\\test.txt",ios_base∷out);C、ofstreamfout;fout.open("d:\\test.txt",ios_base∷out);D、ofstreamfout;fout.open("d:\\test.txt",ios_base∷app);标准答案:A知识点解析:如果以isobase∷in模式打开文件但文件又不存在时,可以通过fail()测出文件打开失败,不会自动创建文件。16、已知类MyClass声明如下:classMyClass{intn;public:MyClass(intk):n(k){}intgetValue()const{returnn;}};在下列数组定义中正确的是()。A、MyClassx1[2];B、MyClassx2[2]={newMyClass(1),newMyClass(2)};C、MyClass*x3[2];D、MyClass*x4[2]={MyClass(1),MyClass(2)};标准答案:C知识点解析:考查的是对象数组。选项A中在建立对象数组时也同样需要调用构造函数:选项B和D的类型不匹配,B中不能将指针传给非指针,D中是将非指针传给指针。17、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:继承分为单继承和多继承,一个类只有一个直接基类时,称为单继承:而一个类同时有多个直接基类时,则称为多继承。派生类的数据成员由所有基类的的数据成员与派生类新增的数据成员共同组成。18、在一个派生类的成员函数中,试图调用其基类的成员函数"voidf();",但无法通过编译。这说明()。A、f()是基类的私有成员B、f()是基类的保护成员C、派生类的继承方式为私有D、派生类的继承方式为保护标准答案:A知识点解析:在派生类对基类的三种继承形式中,都无法对基类的私有成员访问A正确。在B中,三种继承方式都能访问基类的保护成员,故B不正确。C选项的情况在f()是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。同样D也不一定正确。19、有如下类定义和变量定义:classA{public:A(){data=0;}~A(){}intGetData()const{returndata;}voidSetData(intn){data=n;}priyate:intdata;};constAa;Ab;下列函数调用中错误的是()。A、a.GetData();B、a.SetData(10);C、b.GetData();D、b.SetData(10);标准答案:B知识点解析:由题意可知a为常对象,因为常对象不能被更新,所以通过这个常对象只能调用它的常成员函数GetData(),而不能调用其他成员函数SetData(10),因而选项B为本题的正确答案。20、下列运算符不能重载为友元函数的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=标准答案:A知识点解析:此题考查的是运算符重载的概念。c1++语言规定,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。21、在定义函数模板或类模板时,开头的保留字是()。A、typenameB、templateC、classD、typedef标准答案:B知识点解析:定义函数模板或类模板时,开头的保留字是template。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是使输出数据在指定宽度内右对齐。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共22题,每题1.0分,共22分。)1、下列叙述中正确的是A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D、循环队列中元素的个数是由队头指针和队尾指针共同决定标准答案:D知识点解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。2、下面是关于派生类声明的开始部分,其中正确的是()。A、classvirtualB:publicAB、virtualclassB:publicAC、classB:publicAvirtualD、classB:virtualpublicA标准答案:D知识点解析:声明派生类的一般形式为:class派生类名:[继承方式]基类名。其中继承方式包括:public,private,protected,而virtual为C++中的关键字。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。3、下列选项中不属于结构化程序设计原则的是()。A、可封装B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句。4、下列选项中不属于面向对象程序设计特征的是()。A、继承性B、多态性C、类比性D、封装性标准答案:C知识点解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。5、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是()。A、学生成绩管理系统B、C语言编译程序C、UNIX操作系统D、数据库管理系统标准答案:A知识点解析:学生成绩管理系统为应用软件。6、若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为()。A、AA.getA()B、x.getA()C、x.aD、AA∷a标准答案:B知识点解析:要在类外访问x对象中a的值,必须调用类的非静态公有成员函数getA()。7、从工程管理角度看,软件设计一般分为两步完成,它们是()。A、概要设计与详细设计B、数据设计与接口设计C、软件结构设计与数据设计D、过程设计与数据设计标准答案:A知识点解析:软件设计是开发阶段最重要的步骤。从工程管理的角度来看可分为两步:概要设计和详细设计。概要设计是将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式;详细设计是指确立每个模块的实现算法和局部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件与人之间如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。8、构成计算机软件的是A、源代码B、程序和数据C、程序和文档D、程序、数据及相关文档标准答案:D知识点解析:软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。9、用树形结构表示实体之间联系的模型是()。A、关系模型B、网状模型C、层次模型D、以上三个都是标准答案:C知识点解析:层次模型的基本结构是树形结构,这种结构方式在现实世界中很普遍,它们自顶向下、层次分明。10、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、笛卡尔积B、交C、并D、自然连接标准答案:D知识点解析:在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察三个关系R,S,T的结果可知关系T是由关系R和S进行自然连接得到的。11、有如下程序:#includeusingnarnespacestd;classSample{public:Sample(){}~Sample(){cout<<‘*’;}};intmain(){Sampletemp[2],*pTemp[2];return0;}运行这个程序输出星号*的个数为()。A、1B、2C、3D、4标准答案:B知识点解析:本题考查构造函数和析构函数,题中定义了对象数组,那么析构时就析构两次,输出两个*。答案为B。12、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){intf,f1=0,f2=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的值等于l,f1的值等于1,f2的值等于1:第二次循环结束时,变量f的值等于2,fl的值等于1,f2的值等于2;第三次循环结束时,变量f的值等于3,f1的值等于2,f2的值等于3;第四次循环结束时,变量f的值等于5,f1的值等于3,f2的值等于5;结束循环。13、已知函数f的原型是voidf(int*a,long&b);,变量v1、v2的定义是:intv1:loongv2;下列调用语句中正确的是()。A、f(v1,&v2);B、f(v1,v2);C、f(&v1,&v2);D、f(&v1,V2);标准答案:D知识点解析:此题考查的是函数的调用。因为变量的定义是intv1:longv2,而函数f()的第一个参数是指针,第二个参数是引用,所以选项D为正确引用。14、若已经声明了函数原型“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知识点解析:函数重载的原则就是至少要在参数个数或参数类型上有所不同,且如果函数只是函数类型不同的,而其他完全相同,也不能作为重载函数来使用。15、有如下类定义:classFoo{public:Foo(intv):value(v){}//①Foo(){}∥②private:F00(){}∥③intvalue=0;//④};其中存在语法错误的行是()。A、①B、②C、③D、④标准答案:D知识点解析:此题考查的是类的定义。C++语言规定,在类体内不允许对所定义的数据成员进行初始化。16、若AA为一个类,a为该类的非静态数据成员,t在该类的一个成员函数定义中访问a时,其书写格式为()。A、aB、AA.aC、a{}D、AA::a{}标准答案:A知识点解析:类从的成员函数直接引用类从的非静态数据成员。17、下列有关继承和派生的叙述中,正确的是()。A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B、派生类的成员函数可以访问基类的所有成员C、基类对象可以赋值给派生类对象D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个描象类标准答案:D知识点解析:此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项A和B错误;公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项C错误。18、有如下程序#include<iostream>usingnamespacestd;classBase{protected:Base(){cout<<’A’;}Base(charc){cout<<c;}};classDerived:publicBase{public:Derived(charc){cout<<c;}};intmain(){Derivedd1(’B’);return0;}执行这个程序屏幕上将显示输出()。A、BB、BAC、ABD、BB标准答案:C知识点解析:此题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序是:执行基类的构造函数,调用顺序按照各个基类被被继承时声明的顺序;执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序:执行派生类的构造函数。此题中,在建立派生类Derived的对象dl时会先调用基类Base的构造,调用的是默认构造函数,输出字符‘A’;然后调用自身的构造函数,输出‘B’;故程序的输出结果是:AB。19、下列关于类成员对象构造函数调用顺序的叙述中,正确的是()。A、与它们在初始化列表中的顺序相同B、与它们在类中声明的顺序相同C、与析构函数的调用顺序相同D、顺序不确定标准答案:B知识点解析:类成员对象构造函数的调用是按照在类中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行构造的。20、若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是()。A、XVoperator*(XV,XV);B、XV*(XV);C、operator*(XV);D、XVoperator*(XV);标准答案:D知识点解析:“*”是一个二元运算符,在作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中。21、下列关于函数模板的描述中,正确的是()。A、函数模板是一个实例函数B、使用函数模板定义的函数没有返回类型C、函数模板的类型参数与函数的参数相同D、通过使用不同的类型参数,可以从函数模板得到不同的实例函数标准答案:D知识点解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种参数化类型的函数。22、C++系统预定了4个用于标准数据流的对象,下列选项中不属于此类对象的是()。A、coutB、cinC、cerrD、cset标准答案:D知识点解析:C++流有4个预定义的流对象,它们分别是:ein标准输入:cout标准输出;cerr标准出错信息输出;clog带缓冲的标准出错信息输出。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共22题,每题1.0分,共22分。)1、在面向对象方法中,不属于“对象”基本特点的是()。A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A。2、算法的时间复杂度是指()。A、算法的长度B、执行算法所需要的时间C、算法中的指令条数D、算法执行过程中所需要的基本运算次数标准答案:D知识点解析:算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。3、有以下程序段:#include<iostream.h>#defineMAX(x,y)(x)>(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=MAX(i,j)*10;cout<<k<<end1;}程序执行后的输出结果是()。A、15B、100C、150D、10标准答案:C知识点解析:题目程序中的MAX函数是利用条件运算符为?:求最大值。即(x>y)?(x):(y)是当x大于y时取x,否则取y。当i=10,j=15时,“MAX(i,i)”的值为15,所以“k=MAX(i,j)*10;”答案为:150。4、结构化程序所要求的基本结构不包括A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。5、下面描述中错误的是()。A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:软件设计是将软件需求转换为软件表示的过程;数据结构与数据库设计是软件设计的任务之一;PAD图,即问题分析图,是一种主要用于描述软件详细设计的图形工具。6、有如下程序#includeusingnamespacestd;inti=1:classFun{public:staticinti;intvalue(){returni—l;}intvalue()const{returni+l;));intFun::i=2;intmain(){inti=3;Funfunl;constFunfun2;retumO;)若程序的输出结果是:123则程序中下划线处遗漏的语句是()。A、cout<B、cout<C、cout<D、cout<标准答案:A知识点解析:此题考查的是常成员函数。const关键字可以用于参与重函数的区分,此时常对象调用常成员函数,一般对象调用一般成员函数,当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。本题中,通过funl调用value(]函数时,是调用前一个,而通过fun2调用value()函数是调用后一个;另外,value()函数中访问的i是类中定义的数据成员i,全局变量i在类中被“屏蔽”。funl.value()输出i.1=2.1=l:fun2.value()调用后一个value()函数输出i+1=2+l=3;Fun::i是通过类名直接访问类的静态数据成员i的值,即2;所以正确的输出顺序是A选项。7、有如下类定义和变量定义:classA{public:AO{data=O;}~A(){)intGetData0const{returndata;)voidSetData(intn){data=n;)private:intdata;);constAa:Ab;下列函数调用中错误的是()。A、a.GetData0;B、a.SetData(10);C、b.GetData();D、b.SetData(10);标准答案:B知识点解析:由题意可知a为常对象,因为常对象不能被更新,所以通过这个常对象只能调用它的常成员函数GetData(),而不能调用其他成员函数SetData(10),因而选项B为本题的正确答案。8、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、笛卡尔积B、交C、并D、自然连接标准答案:D知识点解析:在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察三个关系R,S,T的结果可知关系T是由关系R和S进行自然连接得到的。9、下列选项中,不属于数据库管理的是()。A、数据库的建立B、数据库的调整C、数据库的监控D、数据库的校对标准答案:D知识点解析:数据库管理一般包括:数据库的建立、数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、数据库的故障恢复和数据库的监控。10、在一个派生类对象结束其生命周期时()。A、先调用派生类的析构函数后调用基类的析构函数B、先调用基类的析构函数后调用派生类的析构函数C、如果基类没有定义析构函数,则只调用派生类的析构函数D、如果派生类没有定义析构函数,则只调用基类的析构函数标准答案:A知识点解析:此题考查的是派生类对象的析构。释放派生类对象时,析构函数的执行顺序是:首先调用派生类自身的析构函数;然后渊用类成员对象的析构函数;最后调用基类的析构函数。所以四个选项中只有选项A正确。11、有如下程序#inc1ude<iostream>usingnamespacestd;intmain(){chara;cin>>a;if(a=’*’)cout<<"***"<<end1,eLsecout<<"###"<<end1;retum0;}输入字符+时,程序的运行结果是()。A、***B、###C、***###D、无输出标准答案:A知识点解析:本题的考点是双分支选择语句的执行流程,答题的关键点在于选择条件的判定。双分支选择语句的执行流程是首先计算if后表达式的值,如果表达式的值为非零,则执行if后面的分支,否则执行与其匹配的else后面的分支。本题执行时虽然输入变量a的值为‘+’,但是在执行if后括号内表达式(a=’*’)的时,由于此表达式为赋值表达式,因此表达式的值为赋值号右边的值’*’,其ASCII码的值非零,执行if后面的输出语句“***”后回车。12、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain0{inti,s=0;for(i=l;s<20;i+=2)s+=i*i;cout<<i<<end1;retum0;}运行这个程序的输出结果是()。A、3B、5C、7D、9标准答案:C知识点解析:在这段程序中for循环共执行3次,每次循环变量i的值增2,在执行第三次循环语句时.变量s的值等于25,大于20而退出循环,此时再执行循环变量i加2运算,所以最后变量i的值等于7。13、下列关于运算符重载的叙述中,错误的是()。A、有的运算符可以作为非成员函数重载B、所有的运算符都可以通过重载而被赋予新的含义C、不得为重载的运算符函数的参数设置默认值D、有的运算符只能作为成员函数重载标准答案:B知识点解析:“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造新的运算符。除了*,.*,->,::,?:,.这五个运算符以外,其他运算符都可以重载。14、以下关键字不能用来声明类的访问权限的是()。A、publicB、staticC、protectedD、private标准答案:B知识点解析:此题考查的是类的访问权限。在C++语言中,类的访问权限有公有、保护和私有三种。故本题选B。15、下列语句中,错误的是()。A、constintbuffer=256;B、constdouble*point;C、intconstbuffer=256;D、double*constpoint;标准答案:D知识点解析:此题考查的是常指针和指针常量的概念。常指针是指向一个常量的指针变量,指针自身的内容可以改变但指针指向的内容不可以改变;指针常量是一个常量,即不能修改指针自身的内容,但可以通过指针修改其所指向的内容。D选项中指针常量point没有初始化,编译无法通过。16、要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是()。A、ifstreamfin=ifstream.open("file.dat");B、ifstream*fim=newifstream("file.dat");C、ifstreamfin;fin.open("file.dat");D、ifstream*fin=newifstream();fin->open("file.dat");标准答案:A知识点解析:在选项A中,在赋值号的左侧表示建立一个输入流对象fin,而在赋值号的右侧的表达式不正确,因为文件输入流类ifstream不能直接调用其成员函数open。17、有如下类和对象的定义:classConstants{public;staticdoublegetPl(){return3.1416;}};Constantsconstants;下列各组语句中,能输出3.1416的是()。A、cout<<constants->getPI();和cout<<Constants::gerPI();B、cout<<constants.getPI();和cout<<Constants.getPI();C、cout<<constants->getaI();和cout<<Constants->getPI();D、cout<<constants.getPI();和cout<<Constants::getPI();标准答案:D知识点解析:此题考查的是静态成员函数的引用。getPI()是类C0nstants的静态成员函数。引用静态成员函数可以有两种形式:一是通过类名直接进行调用,例如类名::静态成员函数名;另一种是用类的任何对象名进行调用其作用仅是通过对象名间接的指出类名,例如constants.getPI()选项D即是这种调用方式。18、以下关键字不能用来声明类的访问权限的是()。A、publicB、staticC、protectedD、private标准答案:B知识点解析:此题考查的是类的访问权限。在C++语言中,类的访问权限有公有、保护和私有三种。故本题选B。19、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:此题考查的是运算符重载的概念。C++语言规定,“,”、“*”、“—>.”、“∷”和“?:”这五个运算符不能被重载,故选项A错误;运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定,故选项B说法是错误的;运算符重载是针对原有运算符,并不能通过重载创造出新的运算符,故选项D错误。20、关于关键字class和typename,下列表述中正确的是()。A、程序中的typename都可以替换为classB、程序中的class都可以替换为typenameC、在模板形参表中只能用typename来声明参数的类型D、在模板形参表中只能用class或typename来声明参数的类型标准答案:A知识点解析:此题考查的是class和typename两个关键字。关键字class除了能用来定义类以外还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时typename与class可以互换,但不能使用typename来定义类;在模板形参表中除了可以用typename和class声明虚拟类型参数外,还可以使用普通类型声明常规函数,故选项C错误。21、要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是()。A、fstreamB、istrearaC、ostreamD、iomanip标准答案:D知识点解析:要使用setw、fixed等操作符,须包含iomanip这个文件。22、下列控制格式输入输出的操作符中,能够设置浮点数精度的是()。A、set)recisionB、setwC、setfillD、showpoint标准答案:A知识点解析:setprecision(intn):设置浮点数的精度(有效位数或小数位数),等价函数调用:io.precision(n)。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共21题,每题1.0分,共21分。)1、下列语句中,错误的是()。A、constintbuffel"=256;B、constinttemp;C、constdouble*point;D、constdouble*rt=newdouble(5.5);标准答案:B知识点解析:此题考查的是符号常量的概念。符号常量必须在声明的同时赋初值,故选项B错误;选项C定义的是一个指向常量的指针变量,即通过指针不能改变它所指向的内容,而它自己的内容是可以改变的,C选项正确。2、下列叙述中正确的是()。A、循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B、在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C、在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D、循环队列中元素的个数是由队头指针和队尾指针共同决定标准答案:D知识点解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。3、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、栈与队列都是线性结构标准答案:D知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。4、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下面图符名标识的图符不属于数据流图合法图符的是A、控制流B、加工C、数据存储D、源和潭标准答案:A知识点解析:数据流图中的主要图形元素有加工(转换)、数据流、存储文件(数据源)、源和潭等。5、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};则下列说法中错误的是()。A、枚举常量YELLOW的值为1B、枚举常量RED的值为6C、枚举常量BLACK的值为10D、枚举常量WHITE的值为1标准答案:D知识点解析:C++语言规定枚举常量的默认值依次等于0,1,…,n一1。也可以给枚举常量赋初值,方法是:在枚举常量的后面跟上“=整型常量”,在给枚举常量赋初值时,如果给其中任何一个枚举常量赋初值,则其后的枚举常量将按自然数的规则依次赋初值。所以本题答案为D。6、有如下程序:#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”。7、层次型、网状型和关系型数据库划分原则是A、记录长度B、文件的大小C、联系的复杂程度D、数据之间的联系方式标准答案:D知识点解析:根据数据之间的联系方式,可以把数据库分为层次型、网状型和关系型数据库,它们是根据数据之间的联系方式来划分的。8、下列选项中,与实现运行时多态性无关的是()。A、重载函数B、虚函数C、指针D、引用标准答案:A知识点解析:在C++中,多态性可以分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模版体现的,运行时的多态性是通过虚函数体现的。9、将E-R图转换为关系模式时,实体和联系都可以表示为A、属性B、键C、关系D、域标准答案:C知识点解析:将E-R图转换为关系模式时,实体和联系都可以表示为关系。10、关于运算符重载,下列表述中正确的是()。A、C++已有的任何运算符都可以重载B、运算符函数的返回类型不能声明为基本数据类型C、在类型转换符函数的定义中不需要声明返回类型D、可以通过运算符重载来创建C++中原来没有的运算符标准答案:C知识点解析:暂无解析11、Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是()。A、cppB、exeC、objD、lik标准答案:C知识点解析:在VC6.0集成开发环境下,用户可以使用编译(compile)命令将一个.cpp为扩展名的C++源程序文件转换成一个以.obj为扩展名的目标文件。12、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assMyClass{public:MyClass(inti=0){cout<<1;}MyClass(constMyClass&x){cout<<2;}MyClass&operatOF(constMyClass&x){cout<<3;return*tlus;}~MyClass(){cout<<4;}};intmain(){MyClassobj1(l),obj2(2),obj3(objl);retum0:}运行时的输出结果是()。A、112444B、11114444C、121444D、11314444标准答案:A知识点解析:当创建MyClass类对象obj1(1)和obj2(2)时候,调用类构造函数会输出两个1,然后创建类对象obj3(obj(1))时,会调用拷贝类构造函数,输出一个2,然后当main函数结束时候,调用三个对象的析构函数会输出三个4。13、若磁盘上已存在某个文本文件,其全路径文件名为d:\ncre\test.txt,下列语句中不能打开该文件的是()。A、ifstreamfile("dAncre\test.txt");B、ifstreamfile("d:\\kncre\\test.txt");C、ifstreamfile;file.open("d:\\kncre\\test.txt");ifstream("d:\\knere\\test.txt");D、ifstream*pFile=new标准答案:A知识点解析:此题考查的是转义字符。在字符常量或字符串中,以“\”开头的一系列字符被看做是一个转义字符。要表示“\”字符,必须使用转义字符“\\”。14、在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。A、该类没有定义任何有参构造函数B、该类没有定义任何无参构造函数C、该类没有定义任何构造函数D、该类没有定义任何成员函数标准答案:C知识点解析:如果一个类中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。15、下列有关抽象类和纯虚函数的叙述中,错误的是()。A、拥有纯虚函数的类是抽象类,不能用来定义对象B、抽象类的派生类若不实现纯虚函数,它也是抽象类C、纯虚函数的声明以“=0;”结束D、纯虚函数都不能有函数体标准答案:D知识点解析:此题考查的是抽象类和纯虚函数的概念。纯虚函数可以有函数体,它的实现由派生类给出。16、下列有关运算符重载的叙述中,正确的是()。A、运算符重载是多态性的一种表现B、C++中可以通过运算符重载创造新的运算符C、C++中所有运算符都可以作为非成员函数重载D、重载运算符时可以改变基结合性标准答案:A知识点解析:此题考查的是运算符重载。C++中运算符重载是多态性的一种表现;运算符重载是针对C++原有运算符进行的,不可能通过重载创造出新的运算符;除了“.”、“.*”、“—>*”、“∷”、“?:”这五个运算符外,其它运算符都可以重载:但“=”“[]”“—>”及所有的类型转换运算符只能作为成员函数重载,运算符重载不可改变其结合性、操作数个数和优先级。17、有如下程序:#includeusingnamespacestd;classBASE{public:~BASE(){cout<<"BASE";}};classDERIVED:publicBASE{public:~DERIVED(){cout<<"DERIVED";}};immain(){DERIVEDx;return0;}执行后的输出结果是()。A、BASEB、DERIVEDC、BASEDERIVEDD、DERJVEDBASE标准答案:D知识点解析:此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,冉执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。18、有如下类定义:classB{public:voidfun1(){}private:voidfun2(){}protected:voidfun3(){)};classD:publicB{protected:voidfun4(){}};若obj是类D的对象,则下列语句中不违反访问控制权限的是()。A、obj.fun1();B、obj.fun2();C、obj.fun3();D、obj.fun4();标准答案:A知识点解析:派生类D公有继承父类B,所以obj可以访问基类B的公有,不能访问其它成员。19、下列关于运算符重载的叙述中,错误的是()。A、有的运算符可以作为非成员函数重载B、所有的运算符都可以通过重载而被赋予新的含义C、不得为重载的运算符函数的参数设置默认值D、有的运算符只能作为成员函数重载标准答案:B知识点解析:“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造新的运算符。除了*,.*,-〉*,::,?:,.这五个运算符以外,其他运算符都可以重载。20、已知类MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行:MyClockc1,c2;//……c2=c1+10;由此可知:为类MyClock重载的“+”运算符函数的声明是()。A、friendMyClockoperator+(MyClock,int);B、friendMyClockoperator+(MyClock,MyClock);C、friendMyClockoperator+(int,MyClock);D、MyClockoperator+(MyClock);标准答案:A知识点解析:由表达式c2=c1+10可知,在对“+”进行重载时,第一操作数是MyClock类的对象,而第二操作数是一个整型数据。21、关于关键字class和typename,下列表述中正确的是()。A、程序中的typename都可以替换为classB、程序中的class都可以替换为typenameC、在模板形参表中只能用typename来声明参数的类型D、在模板形参表中只能用class或typename来声明参数的类型标准答案:A知识点解析:此题考查的是class和typename两个关键字。关键字class除了能用来定义类以外还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时typename与class可以互换,但不能使用typename来定义类;在模板形参表中除了可以用typename和class声明虚拟类型参数外,还可以使用普通类型声明常规函数,故选项c错误。国家二级C++机试(选择题)模拟试卷第6套一、选择题(本题共23题,每题1.0分,共23分。)1、下列叙述中正确的是()。A、有一个以上根结点的数据结构不一定是非线性结构B、只有一个根结点的数据结构不一定是线性结构C、循环链表是非线性结构D、双向链表是非线性结构标准答案:B知识点解析:在数据结构中,树这类的数据结构只有一个根结点,但它不是线性结构。2、下列各组类型声明符中,含义相同的一组是()。A、unsignedlongint和longB、signedshortint和shortC、unsignedshort和shortD、shortint和int标准答案:B知识点解析:此题考查的是基本类型和派生型。C++语言中,基本类型的字长及其取值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。本题A选项中,unsignedlongint的省略形式为unsignedlong;选项B中,signedshortint的省略形式是short;选项c中,unsignedshort的省略形式是unsignedshort;选项D中,shortin的省略形式是short。3、下列叙述中正确的是A、栈是“先进先出”的线性表B、队列是“先进后出”的线性表C、循环队列是非线性结构D、有序线性表既可以采用顺序存储结构,也可以采用链式存储结构标准答案:D知识点解析:栈是“先进后出”,队列“是先进先出”。栈和队列都是一种线性表,属于线性结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构。采用链式存储结构的线性表称之为线性链表。4、有如下程序:#include<iostream>usingnamespacestd;classTestClass{protected:TestClass(){cout<<’x’;}TestClass(charc){cout<<c;}};classTestClass1:publicTestClass{public:TestClass1(charc){cout<<c;}};intmain(){TestClass1d1(’y’);return0:}执行这个程序,屏幕上将显示输出()。A、yB、yxC、xyD、yy标准答

温馨提示

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

评论

0/150

提交评论