1、二级 C+笔试-392 及答案解析(总分:92.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面表示纯虚函数的成员函数是( )。(分数:2.00)A.virtual int v(int);B.void v(int) =0;C.virtual void v() =0;D.virtual void v(int)2.以下不能对二维数组 a 进行正确初始化的语句是( )。(分数:2.00)A.int a 23=0;B.int a 3=1,2,0;C.int a 23=1,2,3,4,5,6;D.int a3=1,2,3,4,5,6;3.假定 Myclass 为一个类,则
2、执行 Myclass a4,*p2;语句时,自动调用该类的构造函数 ( )次。(分数:2.00)A.2B.3C.4D.64.单个用户使用的数据视图的描述称为( )。(分数:2.00)A.外模式B.概念模式C.内模式D.存储模式5.数据的逻辑独立性是指( )。(分数:2.00)A.存储结构与物理结构的逻辑独立性B.数据与存储结构的逻辑独立性C.数据与程序的逻辑独立性D.数据元素之间的逻辑独立性6.关于 new 描述错误的是( )。(分数:2.00)A.使用运算符 new 创建对象数组时必须定义初始值B.使用运算符 new 创建对象时,会调用类的构造函数。C.运算符 new 可以用来动态创建对象和
3、对象数组。D.使用 new 运算符创建的对象可以使用运算符 delete 删除。7.在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,而从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求的是指( )。(分数:2.00)A.用户需求B.非功能需求C.业务需求D.功能要求8.从数据库中获取数据称为( )。(分数:2.00)A.创建数据B.查询数据C.读出数据D.修改数据9.下列输出字符“A”的方法中,( )是错误的。(分数:2.00)A.coatput(A)B.coutAC.coat.put(A)D.char A = A;c
4、outA10.以下错误的 if 语句是( )。(分数:2.00)A.if(xy)x+;B.if(x)x+;C.if(x!=y) coutx;y+;D.if(xy) x+;coutx;else couty;11.在任意一棵二叉树的前序序列和后序序列中,各叶子之间的相对次序关系( )。(分数:2.00)A.不一定相同B.都不相同C.互为逆序D.都相同12.类的析构函数的作用是( )。(分数:2.00)A.一般成员函数B.创建对象C.初始化对象D.删除对象13.下面正确的函数定义形式为( )。(分数:2.00)A.void fun();B.void fun(int x;int y)C.void fu
5、n()D.void fun(int x,y)14.如下的类定义,括号里应填( )。class Myclass public:MyClass(int a =0,int b =0) X=a;Y=b;void Change ( ) const X- =10;Y+ =10;public:( )int X,Y;(分数:2.00)A.staticB.constC.mutableD.可以不添内容15.在软件生存周期中,不属于软件定义阶段的是( )。(分数:2.00)A.问题定义B.系统设计C.可行性研究D.需求分析16.如果一个类至少有一个纯虚函数,那么就称该类为( )。(分数:2.00)A.抽象类B.虚基
6、类C.派生类D.以上三者都不对17.软件调试的目的是( )。(分数:2.00)A.暴露错误B.开发软件的潜能C.提高软件的性能D.改正错误18.在下面表达式中,不表示虚继承的是( )。(分数:2.00)A.virtual publicB.public virtualC.publicD.virtual19.人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖和( )。(分数:2.00)A.数据依赖B.多值依赖C.单值依赖D.数值依赖20.下面函数调用语句含有实参的个数为( )。func( exp1,exp2),(exp3,exp4,exp5);(分数:2.00)A.1B.2C.4D.521
7、.下列程序的输出结果为( )。#include (iostream)using namespace std;void main( )char,a = “hello“ ,“ the“ ,“ world“ ;char * * pa = a:pa + +;cout * pa ENDL;(分数:2.00)A.helloB.theC.worldD.hellotheworld22.C+中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行,另一种是通过( )派生出新的类。(分数:2.00)A.复用B.继承C.封装D.引用23.下面程序的运算结果为 ( )。#include iostream
8、using namespace td;int i;int fun( ) static int i = 10;return + + i;void main ( ) fun( );cout fun() “ ,“ i; (分数:2.00)A.10,100B.12,100C.12,12D.11,10024.C+语言规定,函数返回值的类型是由( )。(分数:2.00)A.return 语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定25.在重载运算符函数时,下面运算符必须重载为类的成员函数的是( )。(分数:2.00)A.+
9、B.-C.+D.-26.下面程序的运行结果为( )。#include iostreamusing namespace std;void main( ) for(int a =0,x =0; !x a + );cout a endl;(分数:2.00)A.0B.1C.10D.1127.在下面程序中,括号里应填( )。#include iostreamusing namespace std;class A public:void fun( )cout “Hello“ endl; ;class B: public A void fun( ) ( ) /调用基类的函数 fun( )tout “HI“
10、endl;(分数:2.00)A.fun()B.fun()C.A:fun()D.A-fun(28.语句 while(!E)中的表达式!E 等价于( )。(分数:2.00)A.E=0B.E! =1C.E! =0D.E=129.在数据库模型中,通常把网状模型和( )称为非关系模型。(分数:2.00)A.层次模型B.关系模型C.树状模型D.顺序模型30.编译时的多态性可以通过使用( )获得。(分数:2.00)A.虚函数和指针B.重载函数C.虚函数和对象D.虚函数和引用31.C+语言本身没有定义 I/O 操作,使用 I/O 流的程序需要包括( )。(分数:2.00)A.stdio.hB.istream.
11、hC.ostream.hD.iostrcam.h32.在线性表的下列运算中,不改变数据元素之间结构关系的运算是( )。(分数:2.00)A.插入B.排序C.删除D.定位33.对下面程序描述正确的是( )。#include iostream using namespace std;class A private:int i;public:class B private:int j;protected:int k;int fun1 ( );MyB;int fun2 ( ); (分数:2.00)A.定义类 B 的对象的语句是: A:B b;B.类 A 的成员函数 fun2()可C.类 A 的成员函数
12、 fun2()可D.类 B 的成员函数 fun1()可以直接访问类 A 的私有成员 i。34.以下程序输出的结果是( )。void main( ) int x = 1,a =0,b =0;switch(x) case 0:b +;case 1: a + +;case 2:a + ;b +;cout a b;(分数:2.00)A.21B.11C.12D.1035.C+类体系中,不能被派生类继承的是( )。(分数:2.00)A.构造函数B.虚函数C.静态成员函数D.赋值操作函数二、填空题(总题数:11,分数:22.00)36.数据的逻辑结构在计算机存储器内的表示,称为数据的 【1】 。(分数:2.
13、00)填空项 1:_37.在深度为 6 的满-X 树中,叶子结点的个数为 【2】 。(分数:2.00)填空项 1:_38.已知_-X 树中序遍历序列是 cbade,它的后序遍历序列是 cbeda,前序遍历序列是 【3】 。(分数:2.00)填空项 1:_39.白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和 【4】 。(分数:2.00)填空项 1:_40.实体完整性规则规定基本关系的所有主属性 【5】 。(分数:2.00)填空项 1:_41.在 C+语言中,一个函数的定义前加上关键字 【6】 时,该函数就声明为内联函数。(分数:2.00)填空项 1:_42.在进行函数调用时,将把参数的 【7】 传递
14、给值参,把参数的 【8】 传递给引用参数。(分数:2.00)填空项 1:_43.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。class Myclass public:Myclass(int num); Myclass( );public:int *p;Myclass: :Myclass( int hum) 【9】 Myclass: Myelass( ) 【10】 ;。(分数:2.00)填空项 1:_44.在析构函数中调用虚函数时,采用 【11】 联编。(分数:2.00)填空项 1:_45.为满足运算符+的可交换性,必须将其重载为 【12】 。(分数:2.00)填空项
15、 1:_46.流操作中若要按八进制、十六进制和十进制格式显示,则应用 【13】 、 【14】 和 【15】 来分别指定。(分数:2.00)填空项 1:_二级 C+笔试-392 答案解析(总分:92.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.下面表示纯虚函数的成员函数是( )。(分数:2.00)A.virtual int v(int);B.void v(int) =0;C.virtual void v() =0; D.virtual void v(int)解析:解析 纯虚函数的声明格式:virtual函数返回类型函数名(参数表)=0;2.以下不能对二维数组 a
16、进行正确初始化的语句是( )。(分数:2.00)A.int a 23=0;B.int a 3=1,2,0;C.int a 23=1,2,3,4,5,6; D.int a3=1,2,3,4,5,6;解析:解析 1,2, 3,4,5,6表示的是 a32。3.假定 Myclass 为一个类,则执行 Myclass a4,*p2;语句时,自动调用该类的构造函数 ( )次。(分数:2.00)A.2B.3C.4 D.6解析:解析 构造函数系统可以自动调用。数组对象 a4调用 4 次构造函数,*p2存放 Myclass 的指针数组,没有生成对象。4.单个用户使用的数据视图的描述称为( )。(分数:2.00)
17、A.外模式 B.概念模式C.内模式D.存储模式解析:解析 单个用户使用的数据视图的描述称为外模式。5.数据的逻辑独立性是指( )。(分数:2.00)A.存储结构与物理结构的逻辑独立性B.数据与存储结构的逻辑独立性C.数据与程序的逻辑独立性 D.数据元素之间的逻辑独立性解析:解析 数据的逻辑独立性是指数据与程序的逻辑独立性,而数据与存储结构以及存储结构和物理结构之间都是相关联的。6.关于 new 描述错误的是( )。(分数:2.00)A.使用运算符 new 创建对象数组时必须定义初始值 B.使用运算符 new 创建对象时,会调用类的构造函数。C.运算符 new 可以用来动态创建对象和对象数组。D
18、.使用 new 运算符创建的对象可以使用运算符 delete 删除。解析:解析 使用 new 创建对象数组或一般数组时,不能为该数组指定初始值,其初始值为默认值。7.在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,而从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求的是指( )。(分数:2.00)A.用户需求B.非功能需求 C.业务需求D.功能要求解析:解析 在各种不同的软件需求中,功能需求描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明,非功能需求是从各个角度对系统的约束和限制,反映了应用对软件
19、系统质量和特性的额外要求。8.从数据库中获取数据称为( )。(分数:2.00)A.创建数据B.查询数据 C.读出数据D.修改数据解析:解析 从数据库中获取数据称为查询数据。9.下列输出字符“A”的方法中,( )是错误的。(分数:2.00)A.coatput(A) B.coutAC.coat.put(A)D.char A = A;coutA解析:解析 put()函数本身就是用于输出字符。10.以下错误的 if 语句是( )。(分数:2.00)A.if(xy)x+;B.if(x)x+;C.if(x!=y) coutx;y+;D.if(xy) x+;coutx;else couty; 解析:解析 i
20、f 和 else 语句必须紧密相连,应该将 x+;coatx;做成复合语句x+;cout x;。11.在任意一棵二叉树的前序序列和后序序列中,各叶子之间的相对次序关系( )。(分数:2.00)A.不一定相同B.都不相同C.互为逆序D.都相同 解析:解析 前序遍历序列的顺序是先根,再左子树,最后右子树;后序遍历序列的顺序是先左子树,再右子树,最后根。因此各叶子之间的相对次序关系在前序序列和后序序列中是一样的。12.类的析构函数的作用是( )。(分数:2.00)A.一般成员函数B.创建对象C.初始化对象D.删除对象 解析:解析 析构函数的作用是删除对象。13.下面正确的函数定义形式为( )。(分数
21、:2.00)A.void fun();B.void fun(int x;int y)C.void fun() D.void fun(int x,y)解析:解析 选项 A 函数声明与函数体之间没有分号;选项 D 形参之间用逗号隔开;选项 D 形参 y 没有类型。14.如下的类定义,括号里应填( )。class Myclass public:MyClass(int a =0,int b =0) X=a;Y=b;void Change ( ) const X- =10;Y+ =10;public:( )int X,Y;(分数:2.00)A.staticB.constC.mutable D.可以不添内
22、容解析:解析 常成员函数一般不能修改对象的数据成员的值,如果一定要修改,必须得在被修改的数据成员定义前加上关键字 mutable。15.在软件生存周期中,不属于软件定义阶段的是( )。(分数:2.00)A.问题定义B.系统设计 C.可行性研究D.需求分析解析:解析 软件开发共有:需求分析,总体设计,详细设计,系统实现,测试和验收等几个阶段。系统设计属于设计阶段。而问题定义、可行性研究和需求分析都属于同一个阶段,即需求分析 (或称软件定义)阶段。16.如果一个类至少有一个纯虚函数,那么就称该类为( )。(分数:2.00)A.抽象类 B.虚基类C.派生类D.以上三者都不对解析:解析 抽象类至少含有
23、一个纯虚函数。17.软件调试的目的是( )。(分数:2.00)A.暴露错误B.开发软件的潜能C.提高软件的性能D.改正错误 解析:解析 调试的目的是定位错误、找出错误的原因并修改程序以修正错误。18.在下面表达式中,不表示虚继承的是( )。(分数:2.00)A.virtual publicB.public virtualC.public D.virtual解析:解析 虚基类的声明格式:class(类名):virtual继承方式基类名。其中关键字virtual 与继承方式的位置无关,但必须位于虚基类类名之前,且 virtual 只对紧随其后的基类名起作用。19.人们已经提出了许多种类型的数据依赖
24、,其中最重要的是函数依赖和( )。(分数:2.00)A.数据依赖B.多值依赖 C.单值依赖D.数值依赖解析:解析 人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖和多值依赖。20.下面函数调用语句含有实参的个数为( )。func( exp1,exp2),(exp3,exp4,exp5);(分数:2.00)A.1B.2 C.4D.5解析:解析 其中(exp1,exp2)是一个实参,(exp3,exp4,exp5)是一个实参。21.下列程序的输出结果为( )。#include (iostream)using namespace std;void main( )char,a = “hell
25、o“ ,“ the“ ,“ world“ ;char * * pa = a:pa + +;cout * pa ENDL;(分数:2.00)A.helloB.the C.worldD.hellotheworld解析:解析 指针与数组对应关系,*p+访问数组第二个元素。22.C+中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行,另一种是通过( )派生出新的类。(分数:2.00)A.复用B.继承 C.封装D.引用解析:解析 继承的基本概念。23.下面程序的运算结果为 ( )。#include iostream using namespace td;int i;int fun( )
26、 static int i = 10;return + + i;void main ( ) fun( );cout fun() “ ,“ i; (分数:2.00)A.10,100B.12,100 C.12,12D.11,100解析:解析 fun()中的 i 为静态变量只在函数中可见,执行两次变为 12;主函数中的 i 为全局变量,fun()对 i 的修改不影响。24.C+语言规定,函数返回值的类型是由( )。(分数:2.00)A.return 语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定 解析:解析 函数返回值
27、的类型是由在定义该函数时所指定的函数类型所决定。25.在重载运算符函数时,下面运算符必须重载为类的成员函数的是( )。(分数:2.00)A.+B.-C.+D.- 解析:解析 =(),-运算符不能够重载为类的友元函数。26.下面程序的运行结果为( )。#include iostreamusing namespace std;void main( ) for(int a =0,x =0; !x a + );cout a endl;(分数:2.00)A.0B.1C.10D.11 解析:解析 当 i=11 时,循环结束。27.在下面程序中,括号里应填( )。#include iostreamusing
28、 namespace std;class A public:void fun( )cout “Hello“ endl; ;class B: public A void fun( ) ( ) /调用基类的函数 fun( )tout “HI“ endl;(分数:2.00)A.fun()B.fun()C.A:fun() D.A-fun(解析:解析 调用格式;类名:成员名或者类名:成员名(参数表)。28.语句 while(!E)中的表达式!E 等价于( )。(分数:2.00)A.E=0 B.E! =1C.E! =0D.E=1解析:解析 语句 while(!E)中的表达式!E 等价于 E=0。29.在数
29、据库模型中,通常把网状模型和( )称为非关系模型。(分数:2.00)A.层次模型 B.关系模型C.树状模型D.顺序模型解析:解析 数据库模型分为层次模型、网状模型和关系模型,其中层次模型和网状模型称为非关系模型。30.编译时的多态性可以通过使用( )获得。(分数:2.00)A.虚函数和指针B.重载函数C.虚函数和对象 D.虚函数和引用解析:解析 采用一般类型的标示对象操作虚函数时,将采用静态联编方式调用虚函数。31.C+语言本身没有定义 I/O 操作,使用 I/O 流的程序需要包括( )。(分数:2.00)A.stdio.hB.istream.hC.ostream.hD.iostrcam.h
30、解析:解析 在 C+中使用 I/O 流的程序需要包括 iostream.h。32.在线性表的下列运算中,不改变数据元素之间结构关系的运算是( )。(分数:2.00)A.插入B.排序C.删除D.定位 解析:解析 选项 A 插入和选项 C 删除因为有数据变更,因此会改变数据元素之间的结构关系,而排序则因为顺序的改变会改变数据元素之间的结构关系。33.对下面程序描述正确的是( )。#include iostream using namespace std;class A private:int i;public:class B private:int j;protected:int k;int fu
31、n1 ( );MyB;int fun2 ( ); (分数:2.00)A.定义类 B 的对象的语句是: A:B b; B.类 A 的成员函数 fun2()可C.类 A 的成员函数 fun2()可D.类 B 的成员函数 fun1()可以直接访问类 A 的私有成员 i。解析:解析 内嵌类的成员函数对包容类的成员没有访问特权,反之亦然。34.以下程序输出的结果是( )。void main( ) int x = 1,a =0,b =0;switch(x) case 0:b +;case 1: a + +;case 2:a + ;b +;cout a b;(分数:2.00)A.21 B.11C.12D.1
32、0解析:解析 x=1,执行 case 1 语句,a+,由于没有 break 语句,继续执行 Case 2 语句,a+; b+;所以 a=2,b=1。35.C+类体系中,不能被派生类继承的是( )。(分数:2.00)A.构造函数 B.虚函数C.静态成员函数D.赋值操作函数解析:解析 派生类不能够继承类的构造函数和析构函数。二、填空题(总题数:11,分数:22.00)36.数据的逻辑结构在计算机存储器内的表示,称为数据的 【1】 。(分数:2.00)填空项 1:_ (正确答案:存储结构)解析:解析 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。37.在深度为 6 的满-X 树中,叶子结
33、点的个数为 【2】 。(分数:2.00)填空项 1:_ (正确答案:63)解析:解析 所谓满-X 树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个叶子结点。在深度为 N 的满二叉树中,叶子结点的个数为 2N-1。38.已知_-X 树中序遍历序列是 cbade,它的后序遍历序列是 cbeda,前序遍历序列是 【3】 。(分数:2.00)填空项 1:_ (正确答案:abcde)解析:解析 前序遍历序列的顺序是先根,再左子树,最后右子树;中序遍历序列的顺序是先左子树,再根,最后右子树;后序遍历序列的顺序是先左子树,再右子树,最后根。后序遍历序列中最后一个是根节点(a),确定根节点后,
34、从中序遍历序列中即可确定左子树(cb)和右子树(de),然后再从后序遍历序列中确定左子树的根(b)及其左子树(c)和右子树(空),从后序遍历序列中确定右子树的根(d)及其左子树(空)和右子树(e),描绘成图,然后求出前序遍历序列。39.白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和 【4】 。(分数:2.00)填空项 1:_ (正确答案:基本路径测试)解析:解析 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试三种。40.实体完整性规则规定基本关系的所有主属性 【5】 。(分数:2.00)填空项 1:_ (正确答案:不许为空)解析:解析 实体完整性是指:关系的主属性,即主码的组成不能为空,也
35、就是关系的主属性不能是空值,在关系系统中一个关系通常对应一个表。41.在 C+语言中,一个函数的定义前加上关键字 【6】 时,该函数就声明为内联函数。(分数:2.00)填空项 1:_ (正确答案:inline)解析:解析 内联函数的声明方法。42.在进行函数调用时,将把参数的 【7】 传递给值参,把参数的 【8】 传递给引用参数。(分数:2.00)填空项 1:_ (正确答案:值|地址)解析:解析 函数传递只有两种形式值传递和地址传递。43.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。class Myclass public:Myclass(int num); Myc
36、lass( );public:int *p;Myclass: :Myclass( int hum) 【9】 Myclass: Myelass( ) 【10】 ;。(分数:2.00)填空项 1:_ (正确答案:P=new int(a)、delete P)解析:解析 new 和 delete 的用法。44.在析构函数中调用虚函数时,采用 【11】 联编。(分数:2.00)填空项 1:_ (正确答案:静态)解析:解析 构造函数不能声明为虚函数,但在构造函数中可以调用虚函数,在构造函数和析构函数中调用虚函数,将采用静态联编。45.为满足运算符+的可交换性,必须将其重载为 【12】 。(分数:2.00)填空项 1:_ (正确答案:友元函数)解析:解析 当需要重载运算符具有可交换性时,选择重载为友元函数。46.流操作中若要按八进制、十六进制和十进制格式显示,则应用 【13】 、 【14】 和 【15】 来分别指定。(分数:2.00)填空项 1:_ (正确答案:ocx、hex、dec)解析:解析 流操作中 ocx、hex、dec 分别指定为按八进制、十六进制和十进制格式显示。