ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:26.50KB ,
资源ID:25144082      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25144082.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(二级C++笔试373.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

二级C++笔试373.docx

1、二级C+笔试373二级C+笔试-373(总分:100.00,做题时间:90分钟)一、选择题(总题数:35,分数:70.00)1.深度为6的满二叉树中,度为2的结点个数为( )。(分数:2.00)A.31B.32C.63D.64解析:解析 本题要用到二叉树的两个性质定义:二叉树的性质2:在二叉树的第k层上,最多有2k-1(k1,其中k为层数)个结点。本题中第6层的结点数=26-1=32个。这也是叶子结点最大数。二叉树的性质3:在任意一棵二叉树中,叶子结点总是比度为2的结点多一个。本题中,叶子结点最多为32个,度为2的结点数为32-1=31个。知识拓展 “满二叉树”是一种特殊的二叉树,指的是除了最

2、后一层外,其他每一层的结点都有两个子结点(左、右子树配齐),也就是说每一层的结点数都是最大数(每k层有2k-1个结点,且深度为m的满二叉树有2m-1个结点)。2.算法的有穷性是指( )。(分数:2.00)A.算法程序的长度是有限的B.算法程序所处理的数据量是有限的C.算法程序的运行时间是有限的D.算法只能被有限的用户使用解析:解析 算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。3.以下程序的输出结果是( )。#includeiostream.hmain()int m=5;if(m+5)coutm;else coutm-;(分数:2.00)A.7B.6C.

3、5D.4解析:解析 此题中,因为m+5成立(此时m的值变为6),所以执行语句coutm;输出结果为6。4.设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值A在序列中的序号是( )。(分数:2.00)A.1B.4C.8D.12解析:解析 建堆的算法:首先将要排序的所有关键码放到一棵完全二叉树的各个结点中(这时的二叉树不具备堆的特性),然后,从i=n/2(n为结点的个数)的结点Ki开始,逐步把以Kn/2,Kn/2-1,Kn/2-2,为根的子树排成堆,直到以K1为根的树排成堆,就完成了建堆过程。此题中,n=16,i=16/

4、2=8,即从第8个结点开始,建堆完成后如下图:*所以经过初始建堆后关键码值A在序列中的序号是1。5.有以下程序:#includeiostreamusing namespace std;int a;int fun();int main()externint a;int b;a=10;b=fun();coutbend1;return 0;int fun()extern int a;return(10*(分数:2.00)A.;解析:解析 由主函数main入手,首先定义外部变量a,它的作用域为从变量的定义处开始,到本程序文件的末尾,赋值为10。然后调用fun函数,在fun函数中计算10*a,其中a的作

5、用域为到文件结尾,所以这里的a为10,即10*10。6.以下程序的输出结果是( )。#includeiostreamusing namespace std;void fun(char*q)+q;cout*qend1;main()static char*s=HI,HELL0,TEST;char*p;p=s;fun(p);system(PAUSE);return 0;(分数:2.00)A.为空B.HIC.HELL0D.TEST解析:解析 由程序main主函数入手,调用fun函数,在fun函数中执行“cout*qend1;”语句实现程序输出。主函数中变量char*s为指针数组,char*p表示p指向

6、的字符指针数据。*p就代表p指向的字符指针。语句“p=s;”表明p指向字符指针s,而*p则是s中的第一个字符串“HI”。主函数将变量p传值给函数fun(char*q)中的q,在函数体内部首先执行“+q”语句,就是将q的指针指向s中的下一个字符串,即“HELL0”,所以输出语句“cout*qend1;”输出该字符串值。7.在C+中,实现封装性需借助于( )。(分数:2.00)A.枚举B.类C.数组D.函数解析:解析 此题考查的是C+语言中对象概念的理解。所谓封装性是指将数据和算法捆绑成一个整体,这个整体就是对象。C+语言通过建立用户定义类型“类”来支持封装性和信息隐藏。8.阅读下面的程序:#in

7、cludeiostream.hvoid main()int x;cinx;if(x+5)coutxend1;elsecoutx-end1;如果两次执行上述程序,且键盘输入分别为4和6,则输出结果分别是( )。(分数:2.00)A.4,6B.3,6C.4,7D.5,7解析:解析 此题首先读入数值4赋给变量x,因为x+5不成立,因为“+”后缀,之后x的值变为5,执行语句coutx-end1;输出:5,之后x的值变为4。当读入的数值是6时,因为x+5成立,所以执行语句coutxend1;输出7。9.设R是一个2元关系,S是一个3元关系,则下列运算中正确的是( )。(分数:2.00)A.R-SB.RS

8、C.RSD.RS解析:解析 关系的交()、并()和差(-)运算要求两个关系是同元的,显然作为二元的R和三元S只能做笛卡儿积运算。10.有如下程序:#includeiostream.hvoid main()char str25=1234,5678),*p2;int i,j,s=0;for(i=0;i2;i+)pi=stri;for(i=0;i2;i+)for(j=0;pij/0;j+=2)s=10*s+pij-0;couts;该程序的输出结果是( )。(分数:2.00)A.1357B.2468C.3556D.23678解析:解析 程序中的“for(i=0;i2;i+)pi=stri;”语句将st

9、r中的值赋值给指针数组p。在接下来的二重for循环中,跳取“j+=2”,p指针指向的值即“1”,“3”,“5”,“7”。在分别对字符到整型的转换,即减去字符0,然后依次转换为千位,百位,十位,个位“10%”操作输出接型s,即“1357”。11.自然连接(Naturaljoin)是一种特殊的等值连接,下列哪个(些)是它满足下面的条件( )。、两关系间有公共域 、通过公共域的等值进行连接 、可进行逆运算(分数:2.00)A.和B.和C.和D.、和解析:解析 自然连接(Naturaljoin)是一种特殊的等值连接,它满足下面的条件:两关系间有公共域;通过公共域的等值进行连接。12.下列程序用来判断数

10、组中特定元素的位置所在,则输出结果为( )。#includeconio.h#includeiostream.hint fun(int*p,int n,int*j)int i;*j=0;for(i=0;in;i+)if(p*jpi)*j=i;return p*j;void main()int a10=1,3,9,0,8,7,6,5,4,2)j;int j;fun(a,10,&j);coutj,aj;(分数:2.00)A.2,9B.3C.9D.3,9解析:解析 由程序中的主函数main入手,调用fun函数。其中第一个实参为数组a的名字,数组名作为实参,传递的是数组的起始地址。所以在fun函数中指针

11、D指向了数组的第一个元素a0。另外实参整型j传递的是引用,也就是j的地址。在fun函数中在for循环中,依次将当前元素pi与j指针值为标识的p*j进行比较,取较大的。最后循环后的结果就是p*j存放数组中的最大值,并且指针j为该值的标识位。可以看出数组的最大值是9标识位为2。13.( )使一个函数可以定义成对许多不同数据类型完成同一个任务。(分数:2.00)A.函数模板B.重载函数C.递归函数D.模板函数解析:解析 函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。因此,函数模板使一个函数可以定义成对许多不同数据类型完成同一个任务。14.以下描述中,不是线

12、性表顺序存储结构特征的是( )。(分数:2.00)A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系解析:解析 线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。15.有如下程序:#includeiostreamusing namespace std;int i=1;class Funpublic:static int i;int value()return i-1;int value()constre

13、turn i+1;int Fun:i=2;int main()int i=3;Fun fun 1;const Fun fun2;_return 0;若程序的输出结果是:123则程序中横线处的语句是( )。(分数:2.00)A.coutfun1.value()Fun:ifun2.value();B.coutFun:ifun1.value()fun2.value();C.countfun.value()fun2.value()Fun:i;D.coutfun2.value()Fun:ifun1.value();解析:解析 此题因为定义的变量i是static类型的(main()函数内部的i只是一个局部

14、变量),所以,选项A)中fun1.value()的返回值是1,Fun:i引用的是外部变量会输出2;fun2.value();会调用常成员函数int valueoconstfrerun i+1;使得外部静态变量i的值增加为3,故输出3。16.下面叙述错误的是( )。(分数:2.00)A.对基类成员的访问能力在private派生类中和public派生类中是相同的B.基类的private成员在public派生类中不可访问C.基类中的public成员在protected派生类中是protected的D.基类中的public成员在protected派生类中仍然是public的解析:解析 基类的公有成员和

15、保护成员在保护派生类中都成了保护成员,其私有成员仍为基类私有。17.在进行任何C+流的操作后,都可以用C+流的有关成员函数检测流的状态:其中只能用于检测输入流状态的操作函数名称是( )。(分数:2.00)A.failB.eofC.badD.good解析:解析 可以用文件流对象的成员函数来判别文件流当前的状态:fail,刚进行的操作失败时返回true,否则返回false;eof,进行输入操作时,若文件到达文件尾返回true,否则返回false;bad,如果进行了非法操作返回true,否则返回false;good,刚进行的操作成功时返回true,否则返回false。18.有如下程序:#includ

16、eiostreamusing namespace std;class TestClass1public:TestClass1 ()coutTestClass1;TestClass1 ()coutTestClass1;class TestClass2:public TestClass1TestClass1 *p;public:Testclass2()coutTestClass2;p=new TestClass1();TestClass2()coutTestClass2;delete p;);int main()TestClass2 obj;return 0;执行这个程序的输出结果是( )。(分数

17、:2.00)A.TestClass2TestClass1TestClass1TestClass1TestClass2TestClass1B.TestClass1TestClass2TestClass1TestClass2TestClass1TestClass1C.TestClass2TestClass1TestClass1TestClass2TestClass1TestClass1D.TestClass1TestClass2TestClas1TestClass1TestClass2TestClass1解析:解析 派生类中构造函数的执行顺序是:先调用基类构造函数,对基类数据成员初始化,然后调用子

18、对象构造函数,对子对象数据成员初始化;最后执行派生类构造函数本身,对派生类数据成员初始化。由主函数main入手,首先定义了一个TestClass2对象obj。其中TestClass2公共继承TestClass1,对象obj可以访问TestClass1中的公有成员函数。TestClass2中定义了一个TestClass1的指针p,给p分配新空间,即指向类TestClass1,输出“TestClass1”。在TestClass2的构造函数中首先输出“TestClass2”,并在TestClass1构造函数中输出“TestClass1”。TestClass2析构函数中输出“TestClass2”,删

19、除指针p,输出“TestClass1”。析构TestClass1输出“TestClass1”。19.下列关于C+函数的说明中,正确的是( )。(分数:2.00)A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是return语句C.标准C+要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式解析:解析 此题考查的是有关函数的概念。内联函数是在函数定义之前加关键字inline来声明的函数,而不是定义在另一个函数体内部的函数,故选项A)错误;无返回值的函数在执行完最后一条语句后,会自动返回而不必加入return语句,故选项B

20、)错误;如果函数只是返回值类型不同,而其他完全相同,则不能作为函数重载来使用。20.下列变量名中,合法的( )。(分数:2.00)A.CHINAB.byte.sizeC.doubleD.A+a解析:解析 变量的定义要符合标识符的定义规则。选项B)byte-size中含有不合法的字符“-”;选项C)中的变量名是C+中的保留字;选项D)变量名中同样含有非法的字符“+”:只有选项A)符合要求。21.在声明派生类时,如果不显示地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义:class TestClassprotected:void fun();class TestClass

21、1:TestClass;则TestClass类中的成员函数fun(),TestClass1类中的访问权限是( )。(分数:2.00)A.publicB.privateC.protectedD.virtual解析:解析 程序中的TestClass1为TestClass的派生类,如果不写继承方式,则默认为private,所以TestClass1私有继承TestClass,对于基类中的保护成员,继承类的访问权限为private。所以选择B)。22.有如下程序:#includeiostreamusing namespace std;class Apublic:A()coutA;class Bpubli

22、c:B()coutB;class C:public AB b;public:C()coutC;int main()C obj;return 0;执行后的输出结果是( )。(分数:2.00)A.CBAB.BACC.ACBD.ABC解析:解析 此题中,语句C obj对象初始化首先调用基类的构造函数A(),输出“A”,其次是C类中对象的构造函数的调用,即调用B(),输出“B”;最后是调用自身的构造函数C(),输出“C”。23.静态数据成员在( )进行初始化。(分数:2.00)A.成员函数列表B.类体外C.构造函数D.成员函数解析:解析 静态数据成员不能在参数初始化表对静态数据成员初始化,只能在类体外

23、进行初始化。24.按照“先进后出”原则组织数据的数据结构是( )。(分数:2.00)A.队列B.栈C.舣向链表D.二叉树解析:解析 栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,而是最后被删除的,是按先进后出的原则组织数据的。知识拓展 “栈”其形式如手枪的弹匣,最后压入的子弹总是最先被弹出,而最先压入的子弹最后才被弹出,也就是“先进后出”。25.关于this指针的说法不正确的是( )。(分数:2.00)A.不能在程序中修改this指针B.this指针可以给其他指针赋值,但不能修改th

24、is指针C.静态成员函数中没有this指针D.this指针可以被赋值解析:解析 this指针不能在程序中修改,不能被幅值;静态成员没有this指针,因为类中只有一个静态成员函数实例,使用this指针无意义。26.下列语句中,错误的是( )。(分数:2.00)A.const int buffer=-256;B.const int temp;C.const double *point;D.const double *rt=new double(5.5);解析:解析 符号常量声明语句的语法格式是:const类型名符号常量=初值表达式,选项B)中未给常变量赋初值,故错误;而选项C)中定义的是一个指向浮

25、点型常量的指针,而不是定义一个浮点型常量,所以可以不赋初值。27.下列对重载函数的描述中,( )是错误的。(分数:2.00)A.重载函数中不允许使用默认参数B.重载函数中编译是根据参数表进行选择C.不要使用重载函数来描述毫不相干的函数D.构造函数重载将会给初始化带来多种方式解析:解析 选项A)中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫无相干的函数;重载函数中编译是根据参数表进行选择,包括参数的个数和类型。28.在三级模式之间引入两层映像,其主要功能之一是( )。(分数:2.00)A.使数据与程序具有较高的独立性B.使系统具有较高的通道能力C.保持数据与程

26、序的一致性D.提高存储空间的利用率解析:解析 数据库管理系统在数据库的三级模式之间提供了两层映像,保证了数据库中数据的较高的逻辑独立性和物理独立性。使系统具有较高的通道能力和提高存储空间的利用率是操作系统的职能,而不是数据库管理系统的职能。在数据库系统中没有“数据和程序一致性”这一概念。29.有如下类说明:class TestClassint x;public:TestClass(int n)x=n;class TestClass1:public TestClassint y;public:TestClass1(int a,int b);在构造函数TestClass1的下列定义中,正确的是(

27、)。(分数:2.00)A.TestClass1:TestClass1 (int a,intb):x(a),y(b)B.TestClass1:TestClass1 (int a,intb):TestClass(a),y(b)C.TestClass1:TestClass1 (int a,intb):x(a),TestClass1(b)D.TestClass1:TestClass1 (int a,intb):TestClass(a),TestClass1(b)解析:解析 题目中程序TestClass为基类,TestClass1为派生类,派生类构造函数的一般形式为:派生类构造函数名(总参数类表):基类

28、构造函数名(参数列表)派生类中新增数据成员初始化语句。派生类TestClass1的基类函数名为TestClass,总参数为int a,int b,所以选择B)。30.下列工具中为需求分析常用工具的是( )。(分数:2.00)A.PADB.PFDC.N-SD.DFD解析:解析 需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。31.对于浯句coutend1x;中的各个组成部分,下列叙述中错误的是( )。(分数:2.00)A.“cout”是个输出流对象B.“end1”的作用是输出回车换行C.“x”是个变量D.“”称作提取运算符解析:解析 语句coutend1x;作用是输出回车和变量x的值。所以题目中选项A)、B)、C)的叙述均正确,只有选项D)叙述错误,“”是插入运算符。32.已知一棵二叉树的先根序列为ABCDEFK,中根序列为DGBAFCK,则结点

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1