1、二级 C+笔试 74 及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.设 int a=l,b=2;,则(a+)+b 和 a+ +b 这两个表达式的值分别为(分数:2.00)A.3,3B.3,4C.4,3D.4,42.下列不是描述类的成员函数的是(分数:2.00)A.构造函数B.析构函数C.友元函数D.拷贝构造函数3.C+语言类体系中,不能被派生类继承的有(分数:2.00)A.转换函数B.构造函数C.虚函数D.静态成员函数4.检查软件产品是否符合需求定义的过程称为(分数:2.00)A.确认测试B.集成测试C.验证测试D.验收测试5.对于类
2、定义 class A public: virtual void func1( ) void func2( ) ; class B:public A public: void func1( )cout“class B func 1“ end1; virtual void func2( )cout “class B func2“ end1; ; 下面正确的叙述是(分数:2.00)A.A:func2( )和 B:func1( )都是虚函数B.A:func2( )和 B:func1( )都不是虚函数C.B:func1( )是虚函数,而 A:func2( )不是虚函数D.B:func1( )不是虚函数,
3、而 A:func2( )是虚函数6.类的析构函数是在什么时候调用的?(分数:2.00)A.类创建时B.创建对象时C.删除对象时D.不自动调用7.在数据库设计中,将 ER 图转换成关系数据模型的过程属于(分数:2.00)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(分数:2.00)A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程9.下面程序的运行结果为 #include iostream.h class A static int n; public: A( )n=1; A
4、(int num) n = num; void print( )cout n; ; int A:n=2; void main( ) A a,b (3); aprint( ); bprint( ); cout end1; (分数:2.00)A.11B.13C.23D.3310.下面程序的运行结果为 #includeiostream.h void main( ) char a=3; switch(a) case3: cout “3“; case2: cout “2“;break; default: cout “1“; (分数:2.00)A.3B.321C.31D.3211.下面程序的运行结果为 #
5、include iostream.h void swap ( int in;i+) result=result*ai; return result; void main( ) int a3=3,4,5; cout fun(a,3) end1; (分数:2.00)A.12B.15C.20D.6024.算法的空间复杂度是指(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行过程中所需要的存储空间25.应用数据库的主要目的是(分数:2.00)A.解决数据保密问题B.解决数据完整性问题C.解决数据共享问题D.解决数据量大的问题26.下列程序的运行结果为 #in
6、clude iostream.h void main( ) int a=2; int b=a+l; cout a/b end1; (分数:2.00)A.066667B.0C.07D.0.6666666627.下面程序的运行结果是 #includeiostream.h class base protected: int a; public: base( )cout“0“; ; class basel:virtual base public: base1( )cout“1“; ; class base2:virtual base public: base2( )cout“2“; ; class d
7、erived:public base1,public base2 public: derived( )cout“3“; void main( ) derived obj; cout end1; (分数:2.00)A.0123B.3120C.0312D.301228.通常拷贝构造函数的参数是(分数:2.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名29.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(分数:2.00)A.控制流B.加工C.数据存储D.源和潭30.下面关于运算符重载的描述错误的是
8、(分数:2.00)A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B.不是所有的运算符都可以进行重载C.运算符函数的调用必须使用关键字 operatorD.在 C+语言中不可通过运算符重载创造出新的运算符31.下面关于 C+语言的描述错误的是(分数:2.00)A.C+语言支持数据封装B.C+语言中引入友元没有破坏封装性C.C+语言允许函数名和运算符重载D.C+语言支持动态联编32.继承机制的作用是(分数:2.00)A.信息隐藏B.数据封装C.定义新类D.数据抽象33.与语句 cout end1;不等价的是(分数:2.00)A.coutn;B.cout 12;
9、C.coutxA;D.cout 0;34.设有定义 int a=1;float f=1.2;char c=a;,则下列表示错误的是(分数:2.00)A.+a;B.f;C.c+;D.8+;35.在 C+语言程序中,对象之间的相互通信通过(分数:2.00)A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现二、B填空题/B(总题数:14,分数:28.00)36.数据的逻辑结构有线性结构和 【1】 两大类。(分数:2.00)填空项 1:_37.顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。(分数:2.00)填空项 1:_38.一个类可以从直接或间接的祖先中继承所有属性
10、和方法。采用这个方法提高了软件的 【3】 。(分数:2.00)填空项 1:_39.软件工程研究的内容主要包括 【4】 技术和软件工程管理。(分数:2.00)填空项 1:_40.关系操作的特点是 【5】 操作。(分数:2.00)填空项 1:_41.C+中封装性、继承性和 【6】 是面向对象思想的主要特征。(分数:2.00)填空项 1:_42.下面程序的结果为U 【7】 /U。 #includeiostream.h void main( ) int a=1,b=2; bool c=1; if(ab) |c) cout“true“ end1; else cout“false“end1; (分数:2.
11、00)填空项 1:_43.下列 for 语句的循环次数为U 【8】 /U。 for (int a=0,b=1;bi+) cout ai“ “; cout end1; (分数:2.00)填空项 1:_45.C+程序是从 【10】 函数开始执行的。(分数:2.00)填空项 1:_46.假定 A 为一个类,则语句 A(A 下面正确的叙述是(分数:2.00)A.A:func2( )和 B:func1( )都是虚函数B.A:func2( )和 B:func1( )都不是虚函数C.B:func1( )是虚函数,而 A:func2( )不是虚函数 D.B:func1( )不是虚函数,而 A:func2( )
12、是虚函数解析:解析 基类中说明的虚函数,在派生类中自然就是虚函数,所以类 B 中 funcl()是虚函数;而类A 中的 func2 没有被关键字 virtual 修饰,所以不是虚函数。6.类的析构函数是在什么时候调用的?(分数:2.00)A.类创建时B.创建对象时C.删除对象时 D.不自动调用解析:解析 析构函数可以被函数调用,也可以系统调用:函数体内的对象在函数结束时调用析构函数和使用 delete 释放对象所占有用的资源。7.在数据库设计中,将 ER 图转换成关系数据模型的过程属于(分数:2.00)A.需求分析阶段B.逻辑设计阶段 C.概念设计阶段D.物理设计阶段解析:解析 E-R 模型即
13、实体联系模型,是将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们之间的两种联接关系。数据库逻辑设计阶段包括以下几个过程:从 E-R 图向关系模式转换,逻辑模式规范化及调整、实现规范化和 RDBMS,以及关系视图设计。8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(分数:2.00)A.模块间的关系B.系统结构部件转换成软件的过程描述 C.软件层次结构D.软件开发过程解析:解析 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和
14、操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。9.下面程序的运行结果为 #include iostream.h class A static int n; public: A( )n=1; A(int num) n = num; void print( )cout n; ; int A:n=2; void main( ) A a,b (3); aprint( ); bprint( ); cout end1; (分数:2.00)A.11B.13C.23D.33 解析:解析 本题考查的是静态数据成员的使用,n 为类 A 的静态成员,即为类 A 的所有对象共有
15、的成员,所以,当对象 b 把 n 初始化为 3 时,对象 a 的成员 n 的值也为 3(这两个 n 实际上是同一个)。10.下面程序的运行结果为 #includeiostream.h void main( ) char a=3; switch(a) case3: cout “3“; case2: cout “2“;break; default: cout “1“; (分数:2.00)A.3B.321C.31D.32 解析:解析 本题主要考查的是 switch 语句的使用,在第一个 case 处,因为满足条件所以输出字符 3,但这个分支没有 break 语句终止,所以会继续执行下面的分支语句,即
16、输出字符 2,这时出现 break语句,结束整个语句,即输出 32。11.下面程序的运行结果为 #include iostream.h void swap ( int in;i+) result=result*ai; return result; void main( ) int a3=3,4,5; cout fun(a,3) end1; (分数:2.00)A.12B.15C.20 D.60解析:解析 for 循环执行 2 次,所以第一次 for 循环为 result=1*al=4,第二次 for 循环为 result =4*a2=20。24.算法的空间复杂度是指(分数:2.00)A.算法程序
17、的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行过程中所需要的存储空间 解析:解析 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。25.应用数据库的主要目的是(分数:2.00)A.解决数据保密问题B.解决数据完整性问题C.解决数据共享问题 D.解决数据量大的问题解析:解析 数据库中的数据具有“集成”与“共享”的特点,亦即是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,故选项 C)正确。26.下列程序的运行结果为 #include
18、 iostream.h void main( ) int a=2; int b=a+l; cout a/b end1; (分数:2.00)A.066667B.0 C.07D.0.66666666解析:解析 表达式值的类型是由操作数的类型决定的,因为本题的两个数都是 int 型的,所以得出的结果也为 int 型,即去掉小数点后的部分,只取商的整数部分。27.下面程序的运行结果是 #includeiostream.h class base protected: int a; public: base( )cout“0“; ; class basel:virtual base public: bas
19、e1( )cout“1“; ; class base2:virtual base public: base2( )cout“2“; ; class derived:public base1,public base2 public: derived( )cout“3“; void main( ) derived obj; cout end1; (分数:2.00)A.0123 B.3120C.0312D.3012解析:解析 本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。28.通常拷贝
20、构造函数的参数是(分数:2.00)A.某个对象名B.某个对象的成员名C.某个对象的引用名 D.某个对象的指针名解析:解析 拷贝初始化构造函数的作用是用一个已知的对象来初始化一个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。29.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(分数:2.00)A.控制流 B.加工C.数据存储D.源和潭解析:解析 数据流图包括 4 个方面,即加工 (转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处
21、理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。30.下面关于运算符重载的描述错误的是(分数:2.00)A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构B.不是所有的运算符都可以进行重载C.运算符函数的调用必须使用关键字 operator D.在 C+语言中不可通过运算符重载创造出新的运算符解析:解析 例如“:”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字 operator,而调用时可直接使用运算符。31.下面关于 C+语言的描述错误的是(分数:2.0
22、0)A.C+语言支持数据封装B.C+语言中引入友元没有破坏封装性 C.C+语言允许函数名和运算符重载D.C+语言支持动态联编解析:解析 数据封装就是数据抽象;友元可以访问类中的所有成员,是面向对象的一个重要特征,但是破坏了封装性;重载和动态联编都是面向对象的另一个特点一多态性。32.继承机制的作用是(分数:2.00)A.信息隐藏B.数据封装C.定义新类 D.数据抽象解析:解析 数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。33.与语句 cout end1;不等价的是(分数:2.00)A.coutn;B.cout 12;C.coutxA;D.cout 0; 解析:解析 题干表示的
23、是回车换行,选项 A,选项 B 和选项 C 都表示回车换行。而选项 D 是字符串的结尾标志。34.设有定义 int a=1;float f=1.2;char c=a;,则下列表示错误的是(分数:2.00)A.+a;B.f;C.c+;D.8+; 解析:解析 +,-运算符不能用于常量表达式。35.在 C+语言程序中,对象之间的相互通信通过(分数:2.00)A.继承实现B.调用成员函数实现 C.封装实现D.函数重载实现解析:解析 对象属于某个已知的类,是类的实例,对象之间通信实际上就是通过函数传递信息,封装是把数据和操作结合在一起,继承是对于类的方法的改变和补充,重载是多态性之一。二、B填空题/B(
24、总题数:14,分数:28.00)36.数据的逻辑结构有线性结构和 【1】 两大类。(分数:2.00)填空项 1:_ (正确答案:非线性结构)解析:解析 数据的逻辑结构有线性结构和非线性结构两大类。37.顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】 的存储单元中。(分数:2.00)填空项 1:_ (正确答案:相邻)解析:解析 常用的存储表示方法有 4 种,顺序存储、链式存储、索引存储、散列存储。其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。38.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 【3】 。(分数:2.00)填空项 1:
25、_ (正确答案:可重用性)解析:解析 本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。39.软件工程研究的内容主要包括 【4】 技术和软件工程管理。(分数:2.00)填空项 1:_ (正确答案:软件开发)解析:解析 基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学,以及软件心理学等内容。40.关系操作的特点是 【5】 操作。(分数:2.00)填空项 1:_
26、 (正确答案:集合)解析:解析 在关系操作中,所有操作对象与操作结果都是关系。而关系定义为元数相同的元组的集合。因此,关系操作的特点是集合操作。41.C+中封装性、继承性和 【6】 是面向对象思想的主要特征。(分数:2.00)填空项 1:_ (正确答案:多态性)解析:解析 面向对象系统包含了三个特征-封装性、继承性和多态性,这三个特征可以很好的实现数据抽象,进行行为共享,完成进化求解和描述一个系统的确定行为。42.下面程序的结果为U 【7】 /U。 #includeiostream.h void main( ) int a=1,b=2; bool c=1; if(ab) |c) cout“tr
27、ue“ end1; else cout“false“end1; (分数:2.00)填空项 1:_ (正确答案:true)解析:解析 本题考查的是对于逻辑运算符号的理解,“|”运算符的任何一边取值为真,则整个运算结果为真。43.下列 for 语句的循环次数为U 【8】 /U。 for (int a=0,b=1;bi+) cout ai“ “; cout end1; (分数:2.00)填空项 1:_ (正确答案:1 2 3 4 5)解析:解析 本题考查的是考生使用简单循环输出数组元素的能力,因为结束条件是 i5,而 i 初始值为 0,所以只会输出前 5 个元素。45.C+程序是从 【10】 函数开
28、始执行的。(分数:2.00)填空项 1:_ (正确答案:main)解析:解析 所有的 C+语言程序都是从 main 函数开始执行,而普通函数的存在是为了简化 main 函数的复杂程度。46.假定 A 为一个类,则语句 A(A &A) ;为该类 【11】 函数的原型说明。(分数:2.00)填空项 1:_ (正确答案:拷贝构造)解析:解析 本题考查的是拷贝构造函数的定义,它是一种特殊的成员函数,作用是使用一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名:拷贝构造函数名(类名&引用名)。47.派生类构造函数的执行顺序是先执行 【12】 的构造函数,然后执行成员对象的构造函数,最后执行 【
29、13】 的构造函数。(分数:2.00)填空项 1:_ (正确答案:12基类)解析:13派生类 解析 本题主要考查的是派生类构造函数的执行顺序,在 C+语言中构造函数的执行顷序是先基类后派生类,而析构函数的执行顷序正好相反,是先调用派生类后调用基类。48.类模板不同于函数模板,类模板只可用 【14】 型参数。(分数:2.00)填空项 1:_ (正确答案:类)解析:解析 本题考查的是类模板的定义,C+语言中模板分为两种:类模板和函数模板,类模板只能用于类型参数,函数模板可以重载。49.下列程序的执行结果为U 【15】 /U。 #includeiostream.h void main( ) cout.fill(*); cout.width(10); cout“hello“ end1; (分数:2.00)填空项 1:_ (正确答案:*hello)解析:解析 本题考查的是 C+语言的流输出操作,cout 中包括的函数 fill()和 width()分别实现填充和设定显示长度的功能。