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

下载本文档

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

文档简介

国家二级C++机试(选择题)模拟试卷8(共9套)(共234题)国家二级C++机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、有如下函数模板:ternplateTcast(Uu){returnu;}其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是()。A、cast(i);B、cast<>(i);C、cast(i);D、cast(i);标准答案:D知识点解析:本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为D。2、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:因为一一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。3、有如下程序:#includeusingnamespacestd;intmain(){inta[6]==23,15,64,33,40,58);intsl,s2;sl=s2=a[0];for(int*p=a+l;p<a+6;p++){if(sl>*p)sl=*p;if(s2<*p)s2=*p;)cout<<s1+s2<<endl;retum0:)运行时的输出结果是()。A、23B、58C、64D、79标准答案:D知识点解析:变量s1和s2的初值都等于23,那么在执行第一次for循环时,*p的值等于15,它小于23,所以把15赋给变量sl;执行第二次for循环时,*p的值等于64,它大于23,所以把64赋给变量s2;而数组a中a[2]后面的元素的值都大于15,小于64,因而变量sl,s2的值不会再发生变化,最终值为15+64=79。4、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。5、有以下程序段:#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。6、有如下程序:#includeusingnamespacestd;classPair{intm,n;public:Pair(intj,intk):m(j),n(k){}intget(){retumm;}intget()const{retumm+n;}};intmain(){Paira(3,5);constPairb(3,5);cout<A、33B、38C、83D、88标准答案:B知识点解析:在主函数中定义了类Pair的一个实例变量a,并分别对实例变量a的数据成员m,n赋初值3,5。所以调用a.get()成员函数时,输出3。又定义类Pair的一个常实例变量b,并分别对实例变量b的数据成员m,n赋初值3,5。所以调用成员函数b.get()时,输出8。7、算法的空间复杂度是指()。A、算法在执行过程中所需要的计算机存储空间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A。8、执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1;i-=2)cout<<’*’;A、24B、25C、26D、50标准答案:B知识点解析:本题考查for循环语句,题目中每执行完循环体后,i都会减2,那么只有50到2之间的偶数才能输出“*”,所以总共输出25次。9、有如下程序:#includeusingnamespacestd;classPart{public:Part(intx=0):va1(x){cout<A、123321B、213312C、213D、123123标准答案:B知识点解析:此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序,最后执行自身的构造函数。析构顺序与之相反。本题中,Whole类中有两个Part类的成员p1和p2,根据它们定义的顺序,先构造pl再构造p2。所以,首先被构造的是p1(y),输出2;第二个被构造的是p2(x),输出1:最后调用析构函数,输出va1的值3;析构函数调用顺序与构造函数相反。故最后输出213312。10、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面属于定义阶段任务的是A、软件设计B、软件测试C、可行性研究D、数据库设计标准答案:C知识点解析:定义阶段包括:问题定义、可行性研究和需求分析。问题定义:要求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认;可行性研究:一方面在于把待开发的系统的目标以明确的语言描述出来,另一方面从经济、技术、法律等多方面进行可行性分析;需求分析:弄清用户对软件系统的全部需求,编写需求规格说明书和初步的用户手册,提交评审。11、若有定义语句“inti=2,j=3;”,则表达式i/j的结果是()。A、0B、0.7C、0.66667D、0.66666667标准答案:A知识点解析:由于变量i、j都是整型变量,所以两者相除所得的商也是整型数据。12、下列语句中,与语句“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。13、在对函数进行原型声明时,下列语法成分中,不需要的是()。A、函数返回类型B、函数参数列表C、函数名D、函数体标准答案:D知识点解析:在C++中函数在使用之前要预先声明,这种声明在标准C++中称为函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类型。14、有如下程序:#include<iostream>usingnarnespacestd;voidfl(int&x){x++;}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}运行这个程序的输出结果是()。A、22B、23C、24D、25标准答案:B知识点解析:在函数f1(int&x){x++;}中,是对变量x的引用,所以当在main函数中执行“f1(x);”语句后,变量x的值等于ll,而在函数voidf2(intx){++x;}中,对变量x的传递调用,在main函数中执行“f2(y);”语句后,变量y的值仍然等于12,所以输出x+y的值等于23。15、下列有关函数重载的叙述中,错误的是()。A、函数重载就是用相同的函数名定义多个函数B、重载函数的参数列表必须不同C、重载函数的返回值类型必须不同D、重载函数的参数可以带有默认值标准答案:C知识点解析:此题考查的是函数重载的概念。在C++语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项C错误。16、下列关于赋值运算符“=”重载的叙述中,正确的是()。A、赋值运算符只能作为类的成员函数重载B、默认的赋值运算符实现了“深层复制”功能C、重载的赋值运算符函数有两个本类对象作为形参D、如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符标准答案:A知识点解析:赋值运算符“=”只能作为成员函数重载。17、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。A、内联函数B、重载函数C、递归函数D、函数模板标准答案:A知识点解析:C++引入内联函数的原因是用它来取代C中的预处理宏函数。两者的区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现的。内联函数在调用时像宏函数一样展开,所以它没有一股函数的参数压栈和退栈操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。18、下列语句中错误的是()。A、constinta;B、constinta=10;C、eonstint*point=0;D、constint*point=newint(10);标准答案:A知识点解析:由关键字const声明符号常量的同时必须为其赋初值。19、在下列函数原型中,可以作为类从构造函数的是()。A、voidAA(int);B、intAA0;C、AA(int)const;D、AA(int);标准答案:D知识点解析:此题考查的是构造函数的概念。构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。选项A、B不符合要求。选项C中函数AA,会更新对象的数据成员。20、执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1;I-=2)cout<<’*’;A、24B、25C、26D、50标准答案:B知识点解析:此题考查的是for循环语句。执行循环语句,变量i从50递减,每次减2,所以循环会执行25次,输出25个’*’。21、有如下程序:#inc1ude<iostream>usingnamespacestd;c1assTest{public:TestO{n+=2;}~Test0{n—=3;}staticintgetNum0{returnn;}private:staticintn;};intTest::n=1;intmain(){Test*p=newTest;deletep;cout<<"n="<Test::getNumO<<end1;retum0;}执行后的输出结果是()。A、n=0B、n=1C、n=2D、n=3标准答案:A知识点解析:此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员n的运算具有叠加性,执行“n+—2”和“n——3”后n的值为0。22、下列有关继承和派生的叙述中,正确的是()。A、派生类不能访问基类的保护成员B、作为虚基类的类不能被实例化C、派生类应当向基类的构造函数传递参数D、虚函,数必须在派生类中重新实现标准答案:C知识点解析:此题考查的是继承和派生。无论使用哪种继承方式,派生类中的成员都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,所以选项A错误:C++中只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以选项B错误;在派生类中可以重新定义从基类继承下来的虚函数,也可以不重新定义,故选项D错误。23、下列选项中,与实现运行时多态性无关的是()。A、重载函数B、虚函数C、指针D、引用标准答案:A知识点解析:在C++中,多态性可以分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模版体现的,运行时的多态性是通过虚函数体现的。24、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){cout.fill(’*’);cout.width(6);cout.fill(’#’);cout<<123<<end1;retum0;}执行后的输出结果是()。A、##123B、123##C、***123D、123***标准答案:A知识点解析:此题考查的是I/O格式化输出。函数width(intn)设置输入输出宽度,当实际数据宽度小于制定的宽度时,多余的位置用填充字符填满;当实际数据宽度大于设置的宽度时,仍按实际宽度输出;函数fill(charc)用来设置填充字符。25、有如下类模板定义:template<typenameT>classBigNumber{longn:public:BigNumber(Ti):n(i){}BigNumberoperator+(BigNumberb){returnBigNtmaber(n+b.n);}}已知b1、b2是,BigNumber的两个对象,则下列表达式中错误的是()。A、b1+b2B、b1+3C、3+b1D、3+3标准答案:C知识点解析:C++运算符的重载有两个方式,一种是做为成员函数,另一种是做为友元函数。前种C++默认省略第一个参数(事实上是对象本身),而后一种是所有的参数都要写全。比如对加法的重载:成员方式为Coperatoroperator+(Coperator&op);,在调用的过程中我们可以理解为result=operator+(op);友元方式为friendCoperatoroperator.(Coperator&op1,Coperator&op2);,在调用的过程中我们可以理解为result=operator-(op1,op2);。对于本题题来说,整数3与b1相加时,3是诚型,b1是BigNumber<T>型,int型不能和别的型做运算。国家二级C++机试(选择题)模拟试卷第2套一、选择题(本题共32题,每题1.0分,共32分。)1、下面关于算法的叙述中,正确的是()。A、算法的执行效率与数据的存储结构无关B、算法的有穷性是指算法必须能在执行有限个步骤之后终止C、算法的空间复杂度是指算法程序中指令(或语句)的条数D、以上三种描述都正确标准答案:B知识点解析:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤后结束。2、如果进栈序列为A,B,C,D,则可能的出栈序列是()。A、C,A,D,BB、B,D,C,AC、C,D,A,BD、任意顺序标准答案:B知识点解析:栈的操作原则为后进先出。选项B中出栈顺序可按“A进,B进,B出,C进,D进,D出,C出,A出”实现。3、下列各选项中,不属乎序言性注释的是()。A、程序标题B、程序设计者C、主要算法D、数据状态标准答案:D知识点解析:注释一般为序言性注释和功能性注释。序言性注释常位于程序开头部分,它包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释一般嵌在源程序体之中,用于描述其后的语句或程序的主要功能。4、下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。A、内模式B、外模式C、概念模式D、逻辑模式标准答案:A知识点解析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。5、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。6、下列不属于软件工程3个要素的是()。A、工具B、过程C、方法D、环境标准答案:D知识点解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。7、数据库系统在其内部具有3级模式,用来描述数据库中全体数据的全局逻辑结构和特性的是()。A、外模式B、概念模式C、内模式D、存储模式标准答案:B知识点解析:概念模式,也称逻辑模式,是对数据库系统中全局数据逻辑结构的描述,是全体用户应用公共数据视图。它不涉及具体的硬件环境与平台,与具体的软件环境也无关。8、下列语句中,错误的是()。A、constintbuffer=-256;B、constanttemp;C、constdouble*point;D、constdouble*it=newdouble(5.5);标准答案:B知识点解析:符号常量声明语句的语法格式是:const类型名符号常量=初值表达式,选项B中未给常变量赋初值,故错误;而选项C中定义的是一个指向浮点型常量的指针,而不是定义一个浮点型常量,所以可以不赋初值。9、在进行任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是()。A、failB、eofC、badD、good标准答案:B知识点解析:可以用文件流对象的成员函数来判别文件流当前的状态:fail,刚进行的操作失败时返回true,否则返回false;eof,进行输入操作时,若文件到达文件尾返回true,否则返回false;bad,如果讲行了非法操作扳回true,否则返回false:good,刚进行的操作成功时返回true,否则返回false。10、对于语句cout<<endl<<x;中的各个组成部分,下列叙述中错误的是()。A、“cout”是一个输出流对象B、“end1”的作用是输出回车换行C、“x”是一个变量D、“<<”称作提取运算符标准答案:D知识点解析:语句cout<<end1<<x;作用是输出回车和变量x的值。所以题目中选项A、B、C的叙述均正确,只有选项D叙述错误,“<<”是插入运算符。11、以下程序的输出结果是()。#include<iostream.h>main(){intm=5;if(m++>5)cout<<m;elsecout<<m--;}A、7B、6C、5D、4标准答案:B知识点解析:此题中,因为m++>5成立(此时m的值变为6),所以执行语句cout<<m;输出结果为6。12、阅读下面的程序:#include<iostream.h>voidmain(){intx;cin>>x;if(x++>5)cout<<x<<end1;elsecout<<x--<<end1;}如果两次执行上述程序,且键盘输入分别为4和6,则输出结果分别是()。A、4,6B、3,6C、4,7D、5,7标准答案:D知识点解析:此题首先读入数值4赋给变量x,因为x++>5不成立,因为“++”后缀,之后x的值变为5,执行语句cout<<x-<<end1;输出:5,之后x的值变为4。当读入的数值是6时,因为x++>》5成立,所以执行语句cout<<x<<end1;输出7。13、关于this指针的说法不正确的是()。A、不能在程序中修改this指针B、this指针可以给其他指针赋值,但不能修改this指针C、静态成员函数中没有this指针D、this指针可以被赋值标准答案:D知识点解析:this指针不能在程序中修改,不能被幅值;静态成员没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。14、有如下程序:#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni-1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;_______return0:}若程序的输出结果是:123则程序中横线处的语句是()。A、cout<<fun1.value()<<Fun:i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<<fun2.value()<<Fun::i;D、cout<<fun2.value()<<Fun::i<<fun1.value();标准答案:A知识点解析:此题因为定义的变量i是static类型的(main()函数内部的i只是一个局部变量),所以,选项A中fun1.value()的返回值是1,Fun::i引用的是外部变量会输出2;fun2.value();会调用常成员函数intvalue()const{returni+l;}使得外部静态变量i的值增加为3,故输出3。15、下列对重载函数的描述中,()是错误的。A、重载函数中不允许使用默认参数B、重载函数中编译是根据参数表进行选择C、不要使用重载函数来描述毫不相干的函数D、构造函数重载将会给初始化带来多种方式标准答案:A知识点解析:选项A中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫无相干的函数;重载函数中编译是根据参数表进行选择,包括参数的个数和类型。16、下列关于对象概念的描述中,正确的是()。A、对象就是C语言中的结构变量B、对象代表着正在创建的系统中的一个实体C、对象是一个状态和操作(或方法)的封装体D、对象之间的信息传递是通过消息进行的标准答案:D知识点解析:对象之间的信息传递是通过消息进行的。对象:方法(函数)+属性(数据),而C语言的结构体其实就是不同类型数据的组合。并没有处理数据的方法。17、在下列double型常量表示中,错误的是()。A、E15B、.35C、3E5D、3E-5标准答案:A知识点解析:在C++中,科学计数法表示小数的方法:E(e)左右必须有数,且E(e)的右侧只能为整数。18、下列给字符数组进行初始化中,正确的是()。A、chars1[]=’’12345abcd’’;B、chars2[3]=’’xyz’’;C、chars3[][3]={’a’,’x’,’y’};D、chars4[2][3]={’’xyz’’,’’mnp’’};标准答案:C知识点解析:在C++中定义二维数组时并赋值,则数组的行数可以省略不写。选项A、B、D均是字符字符串初始化。19、对于int*pa[5];的描述,正确的是()。A、pa是一个指向数组的指针,所指向的数组是5个int型元素B、pa是一个指向某个数组中第5个元素的指针,该元素是int型变量C、pa[5]表示某个数组的第5个元素的值D、pa是一个具有5个元素的指针数组,每个元素是一个int型指针标准答案:A知识点解析:语句“int*p[5]”表示一个数组p,它的大小是5,里面存放的数据类型是int*,也就是整型指针。称之为指针数组(从右向左解析这个表示)。20、执行后的输出结果是()。#include<iostream.h>voidmain(){inti(0);while(++i){if(i==10)break;if(i%3!=1)continue;cout<<i<<end1;}A、147B、247C、432D、731标准答案:A知识点解析:从if(i==10)break;语句了解本循环只到10,输出i的条件是只要1-10之间的数对3取余为1的输出,所以输出的147。21、有如下程序:#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”。22、有如下程序:#include<iostream.h>voidmain(){charstr[2][5]={’’1234’’,’’5678’’},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=str[i];for(i=0;i<2;i++)for(j=0;p[i][j]>’\0’;j+=2)s=10*s+p[i][j]-’0’;cout<<s;}该程序的输出结果是()。A、1357B、2468C、3556D、23678标准答案:A知识点解析:程序中的“for(i=0;i<2;i++)p[i]=str[i];”语句将str中的值赋值给指针数组p。在接下来的二重for循环中,跳取“j+=2”,p指针指向的值即“1”,“3”,“5”,“7”。在分别对字符到整型的转换,即减去字符’0’,然后依次转换为千位,百位,十位,个位“10*s”操作输出整型s,即“1357”。23、以下程序的输出结果是()。#include<iostream>usingnamespacestd;voidfun(char**q){++q;cout<<*q<<end1;}main(){staticchar*s[]={’’HI","HELLO’’,’’TEST’’};char**p;p=s;fun(p);system(’’PAUSE’’);return0;}A、为空B、HIC、HELLOD、TEST标准答案:C知识点解析:由程序main主函数入手,调用fun函数,在fun函数中执行“cout<<*q<<end1;”语句实现程序输出。主函数中变量char*s[]为指针数组,char**p表示p指向的字符指针数据。*p就代表p指向的字符指针。语句“p=s;"表明p指向字符指针s,而**p则是s[]中的第一个字符串“HI”。主函数将变量p传值给函数fun(char**q)中的q,在函数体内部首先执行“++q”语句,就是将q的指针指向s中的下一个字符串,即“HEILO”,所以输出语句“cout<<*q<<end1:”输出该字符串值。24、下列程序用来判断数组中特定元素的位置所在,则输出结果为()。#include<conio.h>#include<iostream.h>intfun(int*p,intn,int*j){inti;*j=0;for(i=0;i<n;i++)if(p[*j]<p[i])*j=i;returnp[*j];}voidmain(){inta[10]={1,3,9,O,8,7,6,5,4,2};intj;fun(a,10,&j);cout<<j<<’,’<<a[j];}A、2,9B、3C、9D、3,9标准答案:A知识点解析:由程序中的主函数main入手,调用fun函数。其中第一个实参为数组a的名字,数组名作为实参,传递的是数组的起始地址。所以在fun函数中指针p指向了数组的第一个元素a[0]。另外实参整型j传递的是引用,也就是j的地址。在fun函数中在for循环中,依次将当前元素p[i]与j指针值为标识的p[*j]进行比较,取较大的。最后循环后的结果就是p[*j]存放数组中的最大值,并且指针j为该值的标识位。可以看出数组的最大值是9标识位为2。25、以下程序的正确运行结果是()。#include<iostream.h>intfun(int);voidmain(){inta=2,i;for(i=0;i<3;i++)cout<<fun(a)<<end1;cout<<end1;}intfun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}A、4,5,6B、6,7,9C、7,8,9D、7,7,7标准答案:C知识点解析:主函数中在for循环中依次调用fun函数。其中c为静态变量,到程序结束有效。第一次循环中2+1+4=7,第二次循环20+1+5=8,第三次循环2+1+6=9。即答案为789。26、静态数据成员在()进行初始化。A、成员函数列表B、类体外C、构造函数D、成员函数标准答案:B知识点解析:静态数据成员不能在参数初始化表对静态数据成员初始化,只能在类体外进行初始化。27、有如下类说明:classTestClass{hatx;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,intb):TestClass(a),TestClass1(b){}标准答案:B知识点解析:题目中程序TestClass为基类,TestClass1为派生类,派生类构造函数的一般形式为:派生类构造函数名(总参数类表):基类构造函数名(参数列表){派生类中新增数据成员初始化语句}。派生类TestClass1的基类函数名为TestClass,总参数为inta,intb,所以选择B)。28、在声明派生类时,如果不显示地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:classTestClass{protected:voidfun(){}};classTestClass1:TestClass{};则TestClass类中的成员函数fun(),TestClass1类中的访问权限是()。A、publicB、privateC、protectedD、virtual标准答案:B知识点解析:程序中的TestClass1为TestClass的派生类,如果不写继承方式,则默认为private,所以TestClass1私有继承TestClass,对于基类中的保护成员,继承类的访问权限为private。所以选择B。29、下面叙述错误的是()。A、对基类成员的访问能力在private派生类中和public派生类中是相同的B、基类的private成员在public派生类中不可访问C、基类中的public成员在protected派生类中是protected的D、基类中的public成员在protected派生类中仍然是public的标准答案:D知识点解析:基类的公有成员和保护成员在保护派生类中都成了保护成员,其私有成员仍为基类私有。30、在C++中,实现封装性需借助于()。A、枚举B、类C、数组D、函数标准答案:B知识点解析:此题考查的是C++语言中对象概念的理解。所谓封装性是指将数据和算法捆绑成一个整体,这个整体就是对象。C++语言通过建立用户定义类型“类”来支持封装性和信息隐藏。31、下列关于类和对象的叙述中,错误的是()。A、一个类只能有一个对象B、对象是类的具体实例C、类是对某一类对象的抽象D、类和对象的关系是一种数据类型与变量的关系标准答案:A知识点解析:此题考查的是类和对象的概念。类是用户定义的一种数据类型,可以使用这个类型来说明一个或多个变量,即对象。32、下列关于C++函数的说明中,正确的是()。A、内联函数就是定义在另一个函数体内部的函数B、函数体的最后一条语句必须是return语句C、标准C++要求在调用一个函数之前,必须先声明其原型D、编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式标准答案:C知识点解析:此题考查的是有关函数的概念。内联函数是在函数定义之前加关键字inline来声明的函数,而不是定义在另一个函数体内部的函数,故选项A错误;无返回值的函数在执行完最后一条语句后,会自动返回而不必加入return语句,故选项B错误;如果函数只是返回值类型不同,而其他完全相同,则不能作为函数重载来使用。国家二级C++机试(选择题)模拟试卷第3套一、选择题(本题共22题,每题1.0分,共22分。)1、下列关于栈叙述正确的是A、栈顶元素能最先被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、以上三种说法都不对标准答案:A知识点解析:栈是先进后出的线性表,栈顶的元素最先被删除,栈底的元素最后被删除。2、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、栈与队列都是线性结构标准答案:D知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。3、下列叙述中正确的是()。A、线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的B、线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C、线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D、以上都不正确标准答案:B知识点解析:线性表的存储分为顺序存储和链式存储。在顺序存储中,所有元素所占的存储空间是连续的。而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。4、有如下类定义: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选项正确。5、结构化程序设计的基本原则不包括()。A、多元性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句,其中不包括多态性。6、软件需求规格说明书的作用不包括()。A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件设计的依据D、软件可行性研究的依据标准答案:D知识点解析:软件规格说明书主要有三个作用:①用户和软件开发人员之间的合同;②开发人员进行设计和编程的依据;③软件工程项目验收的依据。7、程序流程图中带有箭头的线段表示的是()。A、图元关系B、数据流C、控制流D、调用关系标准答案:C知识点解析:程序流程图是一种传统的、应用广泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用柜形表示加工步骤,用菱形表示逻辑条件。8、下列关于this指针的叙述中,正确的是()。A、任何与类相关的函数都有this指针B、类的成员函数都有this指针C、类的友元函数都有this指针D、类的非静态成员函数才有this指针标准答案:D知识点解析:此题考查的是this指针的使用。类的每一个成员函数都有一个隐含的常量指针,即this指针。类的静态成员函数不能含有this指针,因为this指针是一个指向本对象的指针。9、在关系数据库中,用来表示实体间联系的是()。A、属性B、二维表C、网状结构D、树状结构标准答案:B知识点解析:在关系数据库中,实体间的联系由一个二维表来表示。10、负责数据库中查询操作的数据库语言是()。A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:负责数据库中查询操作的数据库语言是数据操纵语言。11、已知类IMS中两个成员函数的声明为“voidlisten()const;”与“voidspeak();”,另有两个对象的定义为“IMSobjl;”与“constIMSobj2;”,则下列语句中,产生编译错误的是()。A、objl.1isten();B、objl.speak();C、obj2.1isten();D、obj2.speak();标准答案:D知识点解析:函数:listen(、)作为类IMS的常成员函数,一般对象obi和常对象obj2都可以调用它,而函数speak()作为IMS的一般成员函数,则只有一般对象objl可以调用,而常对象obi2调用会产生编译错误。12、有如下程序:#includeusingnamespacestd;classSample{friendlongfun(Samples);Sample(10nga){x=a;}private:longx;);longfun(SampleS){if(s.x<2)returnl:returns.x*fun(Sample(s.X-1)):)intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));)return0:}运行时输出的结果是()。A、16B、154C、34标准答案:C知识点解析:此题考查的是友元函数和递归函数。因为fun函数是Sample类的友元函数,所以fun函数可以直接访问Sample类对象的私有成员x。主函数调用fun函数,构造参数为0~5。当n小于2时,fun函数返回l,其余返回值为n*fun(n-1)。n取0~5的值时fun(n)依次为1,l,2,6,24,120,累加结果为154。13、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、投影D、并标准答案: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、下列字符串中不能作为C++标识符使用的是()。A、WHILEB、userC、_lvarD、9stars标准答案:D知识点解析:在C++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者F划线。16、执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1:--i)cout<<’*’;A、48B、49C、50D、51标准答案:B知识点解析:此题考查的是for循环语句。For循环中i从50开始逐渐递减,直到i=1时退出,而此时没有机会执行到循环体,因此一共执行了49次循环体,所以最终输出的是49个字符‘*’。17、己知类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中是将非指针传给指针。18、下列有关抽象类和纯虚函数的叙述中,错误的是()。A、拥有纯虚函数的类是抽象类,不能用来定义对象B、抽象类的派生类若不实现纯虚函数,它也是抽象类C、纯虚函数的声明以“=0;”结束D、纯虚函数都不能有函数体标准答案:D知识点解析:此题考查的是抽象类和纯虚函数的概念。纯虚函数可以有函数体,它的实现由派生类给出。19、下列关于基类和派生类关系的叙述中,正确的是()。A、每个类最多只能有一个直接基类B、派生类中的成员可以访问基类中的任何成员C、基类的构造函数必须在派生类的构造函数体中调用D、派生类除了继承基类的成员,还可以定义新的成员标准答案:D知识点解析:继承分为单继承和多继承,一个类只有一个直接基类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。派生类的数据成员由所有基类的的数据成员与派生类新增的数据成员共同组成。20、有类定义如下: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中对“.”进行了重载,所以根据“.”重载的形式定义,cl一3是正确的,而3一cl是错误的表达式。21、下列运算符不能重载为友元函数的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=标准答案:A知识点解析:此题考查的是运算符重载的概念。c1++语言规定,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。22、有如下程序:#include#includeusingnamespacestd;intmain(){cout<A、***123***456B、***123456***C、***123456D、123456标准答案:C知识点解析:在主函数中第一次输出时调用函数setfill(’*’)设置填充字符为‘*’,调用函数setw(6)设置每次输出的宽度为6,所以第一次输出123时,多余的三个空位用‘*’填充,即结果为***123,第二次从输出流中输出456。国家二级C++机试(选择题)模拟试卷第4套一、选择题(本题共20题,每题1.0分,共20分。)1、下列叙述中正确的是()。A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、栈与队列都是线性结构标准答案:D知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。2、已知递归函数fun的定义如下:intfun(intn){if(n<=1)return1;//递归结束情况elsereturnn*fun(n-2);//递归}则函数调用语句fun(5)的返回值是()。A、5B、12C、15D、30标准答案:C知识点解析:递归函数fun被定义为含有参数intn,返回整型。其中fun函数递归调用本身,当n=1时,fun返回1,如果大于1那么执行n*fun(n-2)。所以,当n等于5时,执行5*fun(3);当3时继续调用fun,3*fun(1),即fun(5)=5*(3*fun(1)),答案为15。3、在下列原型所示的C++函数中,按“传值”方式传递参数的是()。A、voidfl(intx);B、voidf2(int*x);C、‘voidt3(eonstint*x);D、voidf4(int&x);标准答案:A知识点解析:函数参数的3种传递方式:①将变量名作为形参和实参,即传值方式;②传递变量指针;③引用形参。其中B、C选项都是传递变量指针,D选项为引用形参,所以本题答案为A。4、下列描述中正确的是()。A、软件交付使用后还需要再进行维护B、软件工具交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。已交付的软件投入运行后,应在运行使用中不断地维护,根据新提出的需要进行必要而且可能的扩充和删改。5、下面属于白盒测试方法的是()。A、等价类划分法B、逻辑覆盖C、边界值分析法D、错误推测法标准答案:B知识点解析:白盒测试的主要方法有逻辑覆盖、基本路径测试等。6、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式包括概念模式、外模式和内模式(物理模式)。7、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是A、测试B、设计C、编码D、需求分析标准答案:D知识点解析:发阶段由三个阶段组成:设计、实现和测试。需求分析属于定义阶段。8、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、投影D、并标准答案:A知识点解析:选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。投影也是单目运算,该运算从表中选出指定的属性值组成一个新表。自然连接是一种特殊的等价连接,它将表中有相同名称的列自动进行记录匹配。自然连接不必指定任何同等连接条件。9、有如下程序:#inc1ude<iostream>voidfun(int&x,inty){intt=x;x=y;y=t;}intmain(){inta[2]={23,42};return0,}执行后的输出结果是()。A、42,42B、23,23C、23,42D、42,23标准答案:B知识点解析:此题考查是是函数的调用以及参数值的传递。函数fun中的第一个参数是引用传值方式,是双向的;第二个参数是按值传递,是单向的。10、已知枚举类型声明语句为: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+1、m+2…对应,直到下一个赋了值的枚举值或结束。11、执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1:--i)cout<<’*’;A、48B、49C、50D、51标准答案:B知识点解析:此题考查的是for循环语句。For循环中i从50开始逐渐递减,直到i=1时退出,而此时没有机会执行到循环体,因此一共执行了49次循环体,所以最终输出的是49个字符‘*’。12、有如下程序:#include#includeusingnamespacestd;intmain(){ints[]={123,234};cout<A、123234B、***123234C、***123***234D、***123234***标准答案:B知识点解析:在输出语句中定义了输出的格式是字符宽度为6,并且向右对齐,不足的位用‘*’补齐。在c++中,输出格式的设置只对第一次输出有效,在完成了一个数据的输出后,宽度设置自动恢复为0(表示按数据实际宽度输出)。所以对于本题来说,在循环语句中输出数组s[O]中的元素时,按照规定的格式输出,其结果为***123,当输出s[1]时,输出格式已经恢复到按数据实际宽度输出,所以此时输出为234。13、下列有关类继承的叙述中,错误的是()。A、继承可以实现软件复用B、虚基类可以解决由多继承产生的二义性问题C、派生类构造函数要负责调用基类的构造函数D、派生类没有继承基类的私有成员.标准答案:D知识点解析:此题考查的是类继承。派生类继承了基类的(全部数据成员,私有成员),只是基类的私有成员在派生类中是隐藏的,只能在基类内部访问,故选项D错误。14、有如下类定义:c1assMyBase{intk;public:MyBase(intn=0):k(n){}intvalue()const{retumk;}};c1assMyDerived:MyBase{intj;public:MyDerived(inti):j(i){}intgetK()const{returnk;}intgeU()const{retumj;}};编译时发现有一处语法错误,对这个错误最准确的描述是()。A、函数getK试图访问基类的私有成员变量kB、在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或privateC、类MyDerived缺少一个无参的构造函数D、类MyDerived的构造函数没有对基类数据成员k进行初始化标准答案:A知识点解析:此题考查的是派生类对基类成员的访问。因为类中缺省的访问权限是私有,所以本题中MyBase类中定义的成员k是私有成员。派生类中的成员只能访问基类中的公有成员和保护成员,不能访问基类中的私有成员。所以派生类中函数getK()中的语句returnk;是非法的。15、有如下类定义:classPoint{intx_,y_;public:Point():x_(0),y_(0){}Point(intx,inty=0):x_(x),y_(y){}};若执行语句Pointa(2)b[3],*c[4];则Point类的构造函数被调用的次数是()。A、2次B、3次C、4次D、5次标准答案:C知识点解析:此题考查的是类的构造函数。构造函数在对象创建的时候由系统自动调用。在Pointa(2),b[3],*c[4]语句中:a(2)是定义一个对象并传入构造函数2,所以此时会调用以此构造函数;b[3]是定义一个包含3个对象的数组,所以构造函数会被调用3次;*c[4]定义的是4个:Point类对象指针的数组,它并没有创建任何Point对象,所以不调用构造函数。16、已知基类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知识点解析:基类的构造函数是带有参数的,派生类从基类派生,这就需要在派生类的构造函数名后面显示的调用基类的构造函数。17、有如下程序#inc1ude<iostream>usingnamespacestd;classA{public:virtualvoidfunc1(){cout<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfunc1(){cout<"B1";}voidfunc2(){cout<"’B2";}};intmain(){A*p=newB;p一>func1();p一>func2();return0:}运行此程序,屏幕上将显示输出()。A、BIB2B、AIA2C、BIA2D、AIB2标准答案:C知识点解析:此题考查的是虚函数的概念。此题中,funcl是虚函数,func2是一般成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句A*p=newB;定义了一个基类的指针p,并让它指向一个派生类对象。所以通过该指针调用funcl时,运行的是派生类的版本,而通过该指针调用func2运行的是基类的版本。所以程序运行的最后输出是:B1A2。18、若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是()。A、XVoperator*(XV,XV);B、XV*(XV);C、operator*(XV);D、XVoperator*(XV);标准答案:D知识点解析:“*”是一个二元运算符,在作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中。19、下列选项中,与实现运行时多态性无关的是()。A、重载函数B、虚函数C、指针D、引用标准答案:A知识点解析:在C++中,多态性可以分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模版体现的,运行时的多态性是通过虚函数体现的。20、下列关于C++流的说明中,正确的是()。A、与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现B、从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作C、cin是一个预定义的输入流类D、输出流有一个名为open的成员函数,其作用是生成一个新的流对象标准答案:A知识点解析:此题考查的是C++流的概念。从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项B错误;cin是一个预定义的输入流对象而不是流类,故选项C错误;输入输出流中没有open成员函数,故选项D错误。国家二级C++机试(选择题)模拟试卷第5套一、选择题(本题共33题,每题1.0分,共33分。)1、算法的时间复杂度是指A、算法的执行时间B、算法所处理的数据量C、算法程序中的语句或指令条数D、算法在执行过程中所需要的基本运算次数标准答案:D知识点解析:算法的时间复杂度,是指执行算法所需要的计算工作量。算法的工作量可以用算法在执行过程中所需基本运算的执行次数来度量。2、下列关于栈的叙述中,正确的是A、栈底元素一定是最后入栈的元素B、栈顶元素一定是最先入栈的元素C、栈操作遵循先进后出的原则D、以上三种说法都不对标准答案:C知识点解析:栈是限定只能在表的一端进行插入和删除操作的线性表,必须按“后进先出”的规则操作元素。3、对下列二叉树进行前序遍历的结果是()。A、DYBEAFCZXB、YDEBFZXCAC、ABDYECFXZD、ABCDEFXYZ标准答案:C知识点解析:二叉树前序遍历的简单描述:若二叉树为空,则结束返回;否则:①访问根结点;②前序遍历左子树;③前序遍历右子树。可见,前序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是ABDYECFXZ。4、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为A、log2nB、n/2C、nD、n+1标准答案:C知识点解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。5、下列选项中不符合良好程序设计风格的是()。A、源程序要文档化B、数据说明的次序要规范化C、避免滥用goto语句D、模块设计要保证高耦合、高内聚标准答案:D知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一、效率第二”的论点已成为当今主导的程序设计风格。良好的程序设计风格主要应注重和考虑下列几个因素:①源程序文档化,包括下列三个方面:A)符号的命名应具有一定的含义;B)正确的注释能够帮助读者理解程序;C)视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。②数据说明的方法,包括下列三个方面:A)数据说明的次序规范化;B)说明语句中变量安排有序化;C)使用注释来说明复杂数据的结构。③语句的结构应该简单直接,不应该为提高效率而把语句复杂化。④输入和输出方式和风格应尽可能方便用户的使用。6、有如下类定义:classSample{public;Sample(intx):ref(x){}∥①private:Sample():ref(0){}∥②staticintval=5;∥③constintref;∥④};上述程序段中,错误的语句是()。A、①B、②C、③D、④标准答案:C知识点解析:静态整型数据不能定义为类的数据成员。7、执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1;i-=2)cout<<’*’;A、24B、25C、26D、50标准答案:B知识点解析:本题考查for循环语句,题目中每执行完循环体后,i都会减2,那么只有50到2之间的偶数才能输出“*”,所以总共输出25次。8、有如下程序:#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有两个构造函数,在默认构造函数中,给字符数组name赋空值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,name[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出三个“?”符号。9、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是()。A、自然连接B、交C、除D、并标准答案:C知识点解析:从关系R、S和T的结构可以得出关系T是由关系R、S经过除运算后得到的。10、在类声明中,紧跟在“public:”后声明的成员的访问权限是()。A、私有B、公有C、保护D、默认标准答案:B知识点解析:类【{1提供了3种访问控制的权限:公有,私有和保护。其中公有类型定义了类的外部接口,任何一个外部的访问都必须通过外部接口进行。私有类型的成员只允许本类的成员函数访问,来自类外部的任何访问都是非法的,保护类型介于公有类型和私有类型之间,在继承和派生时可以体现出其特点。11、下列字符串中不能作为C++标识符使用的是()。A、WHILEB、userC、_lvarD、9stars标准答案:D知识点解析:在C++中变量名的命名必须遵循一定的原则,其中之一即是第一个字符必须是字母或者下划线。12、下列枚举类型的定义中,包含枚举值3的是()。A、enumtest{RED,YELLOW,BLUE,BLACK};B、enumtest{RED,YELLOW=4,BLUE,BLACK};C、enumtest{RED=—1,YELLOW,BLUE,BLACK};D、enumtest{RED,YELLOW=6,BLUE,BLACK};标准答案:A知识点解析:声明枚举类型的语法格式为:enum<类型名>{<枚举值表>};<枚举值表>包含多个枚举值,它们用逗号隔开,每个枚举值就是一个枚举常量。枚举值有两种定义形式:一是<值名>;二是<值名>=<整型常量>。关于枚举类型有以下4点说明:①一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。②n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1,…n—1对应。③若第i个枚举值赋常量值为m.则其未赋常量值的后续枚举值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。因此,为枚举值赋的整型常量值应从左到右递增。④枚举类型的声明也可作为组声明若干整型符号常量的方法。也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。对于本题来说,在选项A)中,对4个枚举值没有赋常量值,所以它们从左到右与整数0,1,2,3相对应。因而选项A)为正确选项。13、有如下程序:#includeusingnamespacestd;classInstrument{public:virtualvoidDisplay()=0;};classPiano:publicInstrument{public:voidDisplay(){/*函数体程序略*/}};intmain(){Instruments;I

温馨提示

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

评论

0/150

提交评论