1、国家二级( C+)笔试模拟试卷 57及答案与解析 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; iht b=a+1; cout a/b end1; ( A) 0.66667 ( B) 0 ( C) 0.7 ( D) 0.66666666 14 设 inta =1, b=2;,则 (a+)+b和 a+b这两个表达式的值分别为 ( A) 3, 3 ( B) 3, 4 ( C) 4, 3 ( D) 4, 4 15 下面程序的运行结果为 #include iostream h void main() char a=3
5、; 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=&a0,下列的哪个选项和其他 3个选项不是等价的 ? ( A) x=*pa; ( B) x=*(a+1); ( C) x=*(pa+1); ( D) x=a1; 18 下面程序的运行结
6、果为 #include iostream, h Void swap(int &a, int b) int temp; temp=a+; a=b; b=temp; void main() int a=2, b=3; swap(a, b); cout a ”, ” b end1 ( A) 2, 3 ( B) 3, 2 ( C) 2, 2 ( D) 3, 3 19 一个函数功能不太复杂但要求被频繁调用,应选用 ( A)内联函数 ( B)重载函数 ( C)递归函数 ( D)嵌套函数 20 下面关于 C+语言变量的叙述错误的是 ( A) C+语言中变量分为 auto, static, extern和 r
7、egister四种存储类型 ( B)自动变量和外部变量的作用域为整个程序 ( C)内部静态变量的作用域是定义它的函数 ( D)外部静态变量的作用域是定义它的文件 21 为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为 ( A) public ( B) protected ( C) private ( D) static 22 在 C+语言程序中,对象之间的相互通信通过 ( A)继承实现 ( B)调用成员函数实现 ( C)封装实现 ( D)函数重 载实现 23 类的析构函数是在什么时候调用的 ? ( A)类创建时 ( B)创建对象时 ( C)删除对象时 ( D
8、)不自动调用 24 通常拷贝构造函数的参数是 ( A)某个对象名 ( B)某个对象的成员名 ( C)某个对象的引用名 ( D)某个对象的指针名 25 下面程序的运行结果为 #include iostream h class A static int n; public: A()n=1; A(intnum)n=num; void print()cout n; ; int A n=2; void main() Aa, b(3); a.print(); b.print(); cout end1; ( A) 11 ( B) 13 ( C) 23 ( D) 33 26 下列不是描述类的成员函数的是 (
9、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 basel: virtual base public: basel () cout “1“; ; class base2
10、: virtual base public: base2()cout “2“; ; class derived: public basel,public base2 public: derived()cout “3“; ; void main() derived obj; cout end1; ( A) 123 ( B) 3120 ( C) 312 ( D) 3012 30 对于类定义 classA public: virtual void func1() void func2() ; Class B: public A public: void funcl()cout ”class B fu
11、nc1” end1; virtual void func2()cout “class B func 2“ end1; ; 下面正确的叙述是 ( A) A func2()和 B funcl()都是虚函数 ( B) A func2()和 B funcl()都不是虚函数 ( C) B funcl()是虚函数,而 A func2()不是虚函数 ( D) B funcl()不是虚函数,而 A func2()是虚函数 31 下面关于运算符重载的描述错误的是 ( A)运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构 ( B)不是所有的运算符都可以进行重载 ( C)运算符函数的
12、调用必须使用关键字 operator ( D)在 C+语言中不可通过运算符重载创造出新的运算符 32 与语句 cout end1;不等价的是 ( A) cout , n; ( B) cout , 12; ( C) cout , xA; ( D) cout , 0; 33 下 面程序的运行结果是 #include iostream h int fun(inta, int n) int result=1; for(int i=1:i n; i+) result=result*ai; remm result; void main() int a3=3, 4, 5; cout fun(a, 3) en
13、d1; ( A) 12 ( B) 15 ( C) 20 ( D) 60 34 下面程序的运行结果是 #include iostream 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 TT a1, a2, a3; public; FF(TTb1, TTb2, TTb3)a1=b1; a2=b2;a3=b3; TT
14、Sum()return a1+a2+a3; ; void main() FF intx(in(1.1), 2, 3), y(int(4.2), 5, 6); cout x Sum() y Sum() end1; ( A) 6.1 15.2 ( B) 6 15 ( C) 615.2 ( D) 6.1 15 36 如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生 _静态变量。 37 若要把 void ffun()定义为类 A的友元函数,则应在类 A的定义中加入语句_。 38 用两方式控制格式输出分别是 _和用控制符。 39 表达式 operator+(x,int)其可以表示为 _。 4
15、0 有如下程序: void main() int x=2, y=3, a, b, c, d; a=(x+ =-y); b=(x=+y); c=(x-!=y); d=(+x y-); 则程序执行后变量 a, b, c, d的值分别是 _。 41 下列程序运行后的输出结果是 _。 #include iostream.h void main() int s=0,k; for(k=7; k =O; k-) switch(k) case 1: case 4: case 7: s+; break; case 2: case 3: case 6: break: case 0: case 5: s+=2; b
16、reak: cout “s=“ s endl; 42 表达式 x=operator-(y,z)其可以表示 _为。 43 C+中的输入输出是以节字 _的形式实现的。 44 以下程序的输出结果 _。 #include iostream.h void main() int a=0 a+=(a=8); cout a; 45 作为非成员函数重载的运算符,所有操作数 都必须以 _的形式出现在参数表中。 46 浮点数的默认精度值是 _。 47 为解决在多重继承环境中因公共基类带来的 _问题, C+语言提供了虚基类机制。 48 可以把具有相同属性的一些不同对象归类,称为 _。 49 在 C+语言的结构化程序设
17、计中,【 】是程序的基本组成单元;在 C+语言的面向对象设计框架中,【 】是程序的基本组成单元。 国家二级( C+)笔试模拟试卷 57答案与解析 1 【正确答案】 C 【试题解析】 所谓满二叉树是指这样的一种 二义树:除最后一层外,每一层上的所有结点都有两个叶子结点。这就是说,在满二叉树中,层上的结点数都达到最大值,即在满二义树的第 k层上有 2k-1个结点,且深度为 m的满二义树有 2m-1个结点。 2 【正确答案】 D 【试题解析】 前序遍历的第一个结点 a为树的根结点;中序遍历中 a的左边的结点为 a的左子树, a右边的结点为 a的右子树;再分别对 a的左右子树进行上述两步处理,直到每个
18、结点都找到正确的位置。 3 【正确答案】 A 【试题解析】 一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本 身。递归实现的是:当过程每一次执行后,都能返回到最近一次凋用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。 4 【正确答案】 B 【试题解析】 软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。 5 【正确答案】 B 【试题解析】 软件工程鼓
19、励研制和采用各种 先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。 6 【正确答案】 D 【试题解析】 使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能, 7 【正确答案】 C 【试题解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体 ;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C)。 8 【正确答案】
20、B 【试题解析】 内模式 (Internal Schema)又称物理模式 (Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。 9 【正确答案】 A 【试题解析】 数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。 10 【正确答案】 B 【试题解析】 数据库管理系统 (Database Management System,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服
21、务等,数据库管理系统是数据库系统的核心。 11 【正确答案】 B 【试题解析】 数据封装就是数据抽象;友元可以访问类中的所有成员,是面向对象的一个重要特征,但是破坏了封装性;重载和动态联编都是面向对象的另一个特点 多态性。 12 【正确答案】 D 【试题解析】 +, -运算符不能用于常量表达式 。 13 【正确答案】 B 【试题解析】 表达式值的类型是由操作数的类型决定的,因为本题的两个数都是int型的,所以得出的结果也为 int型,即去掉小数点后的部分,只取商的整数部分。 14 【正确答案】 A 【试题解析】 单目的抖运算优先级高于双目的 +运算,不过抖的结合性是自右向左的,而 +是自左至右
22、的,所以上面的两个表达式都是先计算 a+b的值之后, a再自加 1。 15 【正确答案】 D 【试题解析】 木题主要考查的是 switch语句的使用,在第一个 case处,因为满足条件所以输出 字符 3,但这个分支没有 break语句终止,所以会继续执行下面的分支语句,即输出字符 2,这时出现 break语句,结束整个语句,即输出 32。 16 【正确答案】 A 【试题解析】 数组定义中的数字指的是数组的大小,而下标是从 0开始的,所以题中数组的最后一个元素是 num9。 17 【正确答案】 A 【试题解析】 本题考查的是数组和指向数组的指针之间的关系,选项 A)中 x是被数组 a的第一个元素
23、赋值,其余的都是被数组 a的第二个元素赋值。 18 【正确答案】 D 【试题解析】 本题考查 的是引用调用,因为函数 swap引用调用参数 a,所以在swap函数中 a的变化会改变主函数中 9的值,即 a自加 1,但 b的值并未改变。 19 【正确答案】 A 【试题解析】 本题考查的是内联函数的使用,它的引入是为了解决程序中函数调用的效率问题,在编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体宋替换。 20 【正确答案】 B 【试题解析】 自动变量是函数体或分程序内定义的变量,它的作用域在所定义的函数体内或分程序体内。 21 【正确答案】 A 【试题解析】 本题考查 点为类成
24、员的访问权限, public关键字修饰的类成员可以被类的对象通过成员操作符 “ ”直接访问, protected和 private则不能,而 static不能单独修饰类的成员。 22 【正确答案】 B 【试题解析】 对象属于某个已知的类,是类的实例,对象之间通信实际上就是通过函数传递信息,封装是把数据和操作结合在一起,继承是对于类的方法的改变和补充,重载是多态性之一。 23 【正确答案】 C 【试题解析】 析构函数可以被函数调用,也可以系统调用:函数体内的对象在函数结束时调用析构函数和 使用 delete释放对象所占有用的资源。 24 【正确答案】 C 【试题解析】 拷贝初始化构造函数的作用是
25、用一个已知的对象来初始化一个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。 25 【正确答案】 D 【试题解析】 本题考查的是静态数据成员的使用, n为类 A的静态成员,即为类A的所有对象共有的成员,所以,当对象 b把 n初始化为 3时,对象 a的成员 n的值也为 3(这两个 n实际上是同一个 )。 26 【正确答案】 C 【试题解析】 友元函数是独立于当前类的外部函数 ,但它可以访问该类的所有对象的成员;拷贝构造函数是使用已存在的对象初始化正在生成的对象时调用的成员函数。 27 【正确答案】 C 【试题解析】 数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基
26、础。 28 【正确答案】 B 【试题解析】 派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。 29 【正确答案】 A 【试题解析】 本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数, 接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。 30 【正确答案】 C 【试题解析】 基类中说明的虚函数,在派生类中自然就是虚函数,所以类 B中funcl()是虚函数;而类 A中的 fanc2没有被关键字 virtual修饰,所以不是虚函数。 31 【正确答案】 C 【试题解析
27、】 例如 “ ”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字 operator,而调用时可直接使用运算符。 32 【正确答案】 D 【试题解析】 题干表示的是回车换行,选项 A),选项 B)和选项 C)都表示回车换行。而选项 D)是字符串的结尾标志。 33 【正确答案】 C 【试题解析】 for循环执行 2次,所以第一次 for循环为 result=1*a1=4,第二次 for循环为 result =4*a2=20。 34 【正确答案】 C 【试题解析】 应该先做 +运算,然后进行运算,最后比较不等式,实际上最后输出的结果就是被 3除,余数
28、为 2的不大于 8的数。 35 【正确答案】 B 【试题解析】 本题 考查模板函数的应用,表达式 int(1.1)和 int(4.2)是将 1.1和 4.2强制转换为整型。 36 【正确答案】 多个 37 【正确答案】 friend void ffun() 38 【正确答案】 流成员函数 39 【正确答案】 x+ 40 【正确答案】 1 1 0 0 41 【正确答案】 s=7 42 【正确答案】 x=y-z 43 【正确答案】 流 44 【正确答案】 16 45 【正确答案】 参数 46 【正确答案】 6位 47 【正确答案】 二义性 48 【正确答案】 对象类 49 【正确答案】 函数 类 【试题解析】 函数是程序功能实现的主要方式,是实现结构化设计 (将程序分成若干个函数实现 )的基本组成;类是一种用户定义的类型,是实现数据封装和数据抽象的工具,是面向对象设计中的基本组成。