1、国家二级( C+)笔试模拟试卷 91及答案与解析 1 在深度为 5的满二叉树中,叶子结点的个数为 ( A) 32 ( B) 31 ( C) 16 ( D) 15 2 若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是 ( A) bdgcefha ( B) gdbecfha ( C) bdgaechf ( D) gdbehfca 3 一些重要的程序语言 (如 c语言和 Pascal语言 )允许过程的递归调用。而实现递归调用中的存储分配通常用 ( A)栈 ( B)堆 ( C)数组 ( D)链表 4 软件工程的理论和技术性研究的内容主
2、要包括软件开发技术和 ( A)消除软件危机 ( B)软件工程管理 ( C)程序设计自动化 ( D)实现软件可重用 5 开发软件时对提高开发入员工作效率至关重要的是 ( A)操作系统的资源管理功能 ( B)先进的软件开发工具和环境 ( C)程序入员的数量 ( D)计算机的并行处理能力 6 在软件测试设计中,软件测试的主要目的是 ( A)实验性运行软件 ( B)证明软件正确 ( C)找出软件中全部错误 ( D)发现软件错误而执行程 序 7 数据处理的最小单位是 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 8 索引属于 ( A)模式 ( B)内模式 ( C)外模式 ( D)概念
3、模式 9 下述关于数据库系统的叙述中正确的是 ( A)数据库系统减少了数据冗余 ( B)数据库系统避免了一切冗余 ( C)数据库系统中数据的一致性是指数据类型一致 ( D)数据库系统比文件系统能管理更多的数据 10 数据库系统的核心是 ( A)数据库 ( B)数据库管理系统 ( C)模拟模型 ( D)软件工程 11 下面关 于 C+语言的描述错误的是 ( A) C+语言支持数据封装 ( B) C+语言中引入友元没有破坏封装性 ( C) C+语言允许函数名和运算符重载 ( D) C+语言支持动态联编 12 设有定义 int a=1; float f=1.2; char c=a;,则下列表示错误的
4、是 ( A) +a; ( B) f; ( C) c+; ( D) 8+; 13 下列程序的运行结果为 #include iostream.h void main( ) int a=2; int b=a+l; cout a/b end1; ( A) 0.66667 ( B) 0 ( C) 0.7 ( D) 0.66666666 14 设 int a=l, b=2;,则 (a+)+b和 a+ +b这两个表达式的值分别为 ( A) 3, 3 ( B) 3, 4 ( C) 4, 3 ( D) 4, 4 15 下面程序的运行结果为 #include iostream.h void main( ) cha
5、r a=3; switch(a) case3: cout “3“; case2: cout “2“; break; default: cout “1“; ( A) 3 ( B) 321 ( C) 31 ( D) 32 16 有如下数组声明: int num10;,下标值引用错误的是 ( A) num10 ( B) num5 ( C) num3 ( D) num0 17 存在定义 int a10, x, *Pa;,若 pa= A(int num) n = num; void print( )cout n; ; int A: n=2; void main( ) A a, b (3); a prin
6、t( ); ( A) 11 ( B) 13 ( C) 23 ( D) 33 26 下列不是描述类的成员函数的是 ( A)构造函数 ( B)析构函数 ( C)友元函数 ( D)拷贝构造函数 27 继承机制的作用是 ( A)信息隐藏 ( B)数据封装 ( C)定 义新类 ( D)数据抽象 28 C+语言类体系中,不能被派生类继承的有 ( A)转换函数 ( B)构造函数 ( C)虚函数 ( D)静态成员函数 29 下面程序的运行结果是 #include iostream.h class base protected: int a; public: base( )cout “0“; ; class b
7、asel: virtual base public: base1( )cout “1“; ; class base2: virtual base public: ( A) 123 ( B) 3120 ( C) 312 ( D) 3012 30 对于类定义 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; ; 下
8、面正确的 ( A) A:func2( )和 B:func1( )都是虚函数 ( B) A:func2( )和 B:func1( )都不是虚函数 ( C) B:func1( )是虚函数,而 A:func2( )不是虚函数 ( D) B:func1( )不是虚函数,而 A:func2( )是虚函数 31 下面关于运算符重载的描述错误的是 ( A)运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构 ( B)不是所有的运算符都可以进行重载 ( C)运算符函数的调用必须使用关键字 operator ( D)在 C+语言中不可通过运算符重载创造出新的运算符 32 与语句 co
9、ut end1;不等价的是 ( A) cout n; ( B) cout 12; ( C) cout xA; ( D) cout 0; 33 下面程序的运行结果是 #include iostream.h int fun ( int a , int n) int result=1; for(int i=1;i n; i+) result=result*ai; return result; void main( ) int a3=3, 4, 5; cout fun(a, ( A) 12 ( B) 15 ( C) 20 ( D) 60 34 下面程序的运行结果是 #include iostream.
10、h void main( ) int i=1; while(i =8) if ( +i%3!=2)continue; else cout i; ( A) 25 ( B) 36 ( C) 258 ( D) 369 35 下列程序的运行结果为 #include iostream.h template class TT class FF TTa1, a2, a3; public: FF(TTb1, TTb2, TTb3)a1=b1; a2=b2;a3=b3; TT Sum( )return al+a2+a3; ; void main( ) FF int x (int(1.1), 2, 3), y(i
11、nt(4.2), 5, ( A) 6.1 15.2 ( B) 6 15 ( C) 615.2 ( D) 6.115 36 数据结构分为逻辑结构与存 储结构,线性链表属于【 】。 37 在面向对象方法中,类之间共享属性和操作的机制称为【 】。 38 耦合和内聚是评价模块独立性的两个主要标准,其中【 】反映了模块内各成分之间的联系。 39 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体 “项目主管 ”与实体 “项目 ”的联系属于【 】的联系。 40 数据库设计分为以下 6个设计阶段:需求分析阶段、【 】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。 41 假设 int a=
12、1, b=2;,则表达式 (+a/B) *b的值为 【 】 。 42 C+语言提供的基本控制结构可以分为 3种类型:顺序结构、【 】和循环结构。 43 C+语句 const char*const p=“hello“;,所定义的指针 p和它所指的内容都不能被【 】。 44 C+语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取【 】方式。 45 对于下面定义的类 MyClass,请在函数 f( )中添加对象成员把 n的值修改为50。 class MyClass public: MyClass(int x)n=x; void SetNum(int nl)n
13、 = nl; private: int n; ; int f( ) MyClass * ptr=new MyClass(45); 【 】 46 继承的方式有公有继承、私有继承和【 】 3种。 47 表达式 operator+(x, y)还可以表示为【 】。 48 类模板的使用实际上是 将类模板实例化成一个具体的【 】。 49 在 C+语言的结构化程序设计中,【 】是程序的基本组成单元;在 C+语言的面向对象设计框架中,【 】是程序的基本组成单元。 国家二级( C+)笔试模拟试卷 91答案与解析 1 【正确答案】 C 【试题解析】 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结
14、点都有两个叶子结点。这就是说,在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点,且深度为 m的满二叉树有 2m-1个结点。 2 【正确答案】 D 【试题解析】 前序遍历的第一个结点 a为树的根结点;中序遍历中 a的左边的结点为 a的左子树, a右边的结点为 a的右子树;再分别对 a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。 3 【正确答案】 A 【试题解析】 一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来
15、存储这些调用点。 4 【正确答案】 B 【试题解析】 软件工程的目标是,在给定的 成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。 5 【正确答案】 B 【试题解析】 软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。 6 【正确答案】 D 【试题解析】 使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足 规定的需求或是弄清预期结
16、果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。 7 【正确答案】 C 【试题解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C。 8 【正确答案】 B 【试题解析】 内模式 (Internal SchemA又称物理模式 (Physical SchemA,它给出了数据库物理存 储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。 9 【正确答案】 A 【试题解析】
17、数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。 10 【正确答案】 B 【试题解析】 数据库管理系统 (Database Management System,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据 库系统的核心。 11 【正确答案】 B 【试题解析】 数据封装就是数据抽象;友元可以访问类中的所有成员,是面向对象的一个重要特征,但是破坏了封装性;重载和动态联编都是面向对象的另一个特点一多态性。 12 【正确答案】 D 【试
18、题解析】 +, -运算符不能用于常量表达式。 13 【正确答案】 B 【试题解析】 表达式值的类型是由操作数的类型决定的,因为本题的两个数都是int型的,所以得出的结果也为 int型,即去掉小数点后的部分,只取商的整数部分。 14 【正确答案】 A 【试题解析】 单目的 +运算优先级高于双目的 +运算,不过 +的结合性是自右向左的,而 +是自左至右的,所以上面的两个表达式都是先计算 a+b的值之后, a再自加 1。 15 【正确答案】 D 【试题解析】 本题主要考查的是 switch语句的使用,在第一个 case处,因为满足条件所以输出字符 3,但这个分支没有 break语句终止,所以会继续执
19、行下面的分支语句,即输出字符 2,这时出现 break语句,结束整个语句,即输出 32。 16 【正确答案】 A 【试题解析】 数组定义中的数字指的是数组的大 小,而下标是从 0开始的,所以题中数组的最后一个元素是 num9。 17 【正确答案】 A 【试题解析】 本题考查的是数组和指向数组的指针之间的关系,选项 A中 x是被数组 a的第一个元素赋值,其余的都是被数组 a的第二个元素赋值。 18 【正确答案】 D 【试题解析】 本题考查的是引用调用,因为函数 swap引用调用参数 a,所以在swap函数中 a的变化会改变主函数中 a的值,即 a自加 1,但 b的值并未改变。 19 【正确答案】
20、 A 【试题解析】 本题考查的是内联函数的使用,它的引入是为了解 决程序中函数调用的效率问题,在编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来替换。 20 【正确答案】 B 【试题解析】 自动变量是函数体或分程序内定义的变量,它的作用域在所定义的函数体内或分程序体内。 21 【正确答案】 A 【试题解析】 本题考查点为类成员的访问权限, public关键字修饰的类成员可以被类的对象通过成员操作符 “.”直接访问, protected和 private则不能,而 static不能单独修饰类的成员。 22 【正确答案】 B 【试题解 析】 对象属于某个已知的类,是类的实例,对
21、象之间通信实际上就是通过函数传递信息,封装是把数据和操作结合在一起,继承是对于类的方法的改变和补充,重载是多态性之一。 23 【正确答案】 C 【试题解析】 析构函数可以被函数调用,也可以系统调用:函数体内的对象在函数结束时调用析构函数和使用 delete释放对象所占有用的资源。 24 【正确答案】 C 【试题解析】 拷贝初始化构造函数的作用是用一个已知的对象来初始化一个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。 25 【正确答案】 D 【试题解析】 本题考查的是静态数据成员的使用, n为类 A的静态成员,即为类A的所有对象共有的成员,所以,当对象 b把 n初始化为
22、 3时,对象 a的成员 n的值也为 3(这两个 n实际上是同一个 )。 26 【正确答案】 C 【试题解析】 友元函数是独立于当前类的外部函数,但它可以访问该类的所有对象的成员;拷贝构造函数是使用已存在的对象初始化正在生成的对象时调用的成员函数。 27 【正确答案】 C 【试题解析】 数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基础。 28 【正确答案】 B 【试题解析】 派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。 29 【正确答案】 A 【试题解析】 本题考查的是含有虚基类的继承中构造函数的调用顺序,应
23、该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。 30 【正确答案】 C 【试题解析】 基类中说明的虚函数,在派生类中自然就是虚函数,所以类 B中funcl()是虚函数;而类 A中的 func2没有被关键字 virtual修饰,所以不是虚函数。 31 【正确答案】 C 【试题解析】 例如 “:”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字 operator,而调用时可直接使用运算符。 32 【正确答案】 D 【试题解析】 题干表示的是回车换行,选项 A,选项 B和选项 C都表示回
24、车换行。而选项 D是字符串的结尾标志。 33 【正确答案】 C 【试题解析】 for循环执行 2次,所以第一次 for循环为 result=1*al=4,第二次for循环为 result =4*a2=20。 34 【正确答案】 C 【试题解析】 应该先做 +运算,然后进行 %运算,最后比较不等式,实际上最后输出的结果就是被 3除,余数为 2的不大于 8的数。 35 【正确答案】 B 【试题解析】 本题考查模板函数的应用,表达式 int(1.1)和 int(4.2)是将 1.1和 4.2强制转换为整型。 36 【正确答案】 存储结构 【试题解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据
25、结构;数据的存储结构是指数据的 逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。 37 【正确答案】 继承 【试题解析】 类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的继承关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使该类型继承了其超类的属性和方法,当然,也可以定义自己的属性和方法。 38 【正确答案】 内聚 【试题解析】 内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量 ,内聚是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度
26、量。 39 【正确答案】 一对多 (或 1:N) 【试题解析】 两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有 3种,即 对一 (1:1)的联系、 对多 (1:N)或多对一 (N:1)的联系和多对多(M:N)的联系。 40 【正确答案】 数据库概念设计阶段 【试题解析】 数据库设计分为以下 6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。 41 【正确答 案】 2 【试题解析】 运算符 +的优先级高于双目运算符 /,所以括号中的运算为 2/2,最后的结果为 2/2*2。 42 【正确答案】 选择结构 【试题解析】 顺序结构
27、 (也叫连续结构 )和循环结构是经常被使用的,不过选择结构 (if和 switch)也是一种重要的流程控制结构。 43 【正确答案】 改变 【试题解析】 本题考查的是定义常量的关键字 const,由 const定义的变量的值不可以再改变,所以定义时必须进行初始化。 44 【正确答案】 传地址 【试题解析】 本题考查的是传 值调用和传址调用的区别一传值调用只是进行值的简单复制,返回之后不会改变原来的值;而传址调用是把参数的地址传人,会改变原来的值。 45 【正确答案】 ptr- SetNum(50); 【试题解析】 本题考查的是考生使用对象指针调用成员函数的能力,指针调用成员函数应该使用符号 “
28、- ”。 46 【正确答案】 保护继承 【试题解析】 继承性是面向对象程序设计中最重要的机制,用户可以根据不同的需要选择 3种不同的继承方式。 47 【正确答案】 x+y 【试题解析】 本题考查的是运算符函数的 调用,可以像一般函数那样用函数名进行调用,也可通过运算符构成表达式的形式进行调用。 48 【正确答案】 类 【试题解析】 本题考查的是类模板的使用方式,就是把类模板的一般化定义实例化为一个真正的类。 49 【正确答案】 函数 类 【试题解析】 函数是程序功能实现的主要方式,是实现结构化设计 (将程序分成若干个函数实现 )的基本组成;类是一种用户定义的类型,是实现数据封装和数据抽象的工具,是面向对象设计中的基本组成。