1、国家二级( C+)笔试模拟试卷 128及答案与解析 1 设有一个 10阶的对称矩阵 A1010,采用压缩存储方式按行将矩阵中下三角部分的元素存入一维数组 B中, A00存入 B0中,则 A85在 B中 ( )位置。 ( A) 32 ( B) 33 ( C) 41 ( D) 65 2 设 F是一个森林, B是由 F转换得到的二叉树, F中有几个非叶结点,则 B中右指针域为空的结点有 ( )个。 ( A) n-1 ( B) n ( C) n+1 ( D) n+2 3 在一个无向图中,所有顶点的度数之和等于 所有边数的 ( )倍。 ( A) 3 ( B) 2 ( C) 1 ( D) 1/2 4 由两
2、个栈共享一个向量空间的好处是 ( )。 ( A)减少存取时间,降低下溢发生的几率 ( B)节省存储空间,降低上溢发生的几率 ( C)减少存取时间,降低上溢发生的几率 ( D)节省存储空间,降低下溢发生的几率 5 设数组 datam作为循环队列 SQ的存储空间, front为队头指针, rear为队尾指针,则执行出队操作后其头指针 front值为 ( )。 ( A) front=front+1 ( B) front=(front+1)%(m-1) ( C) front=(front-1)%m ( D) front=(front+1)%m 6 一个非空广义表的表头 ( )。 ( A)不可能是子表
3、( B)只能是子表 ( C)只能是原子 ( D)可以是子表或原子 7 用某种排序方法对关键字序列 (25, 84, 21, 47, 15, 27, 68, 35, 20)进行排序时,序列的变化情况如下: 20, 15, 21, 25, 47, 27, 68, 35, 84 15, 20, 21, 25, 35, 27, 47, 68, 84 15, 20, 2重, 25, 27, 35, 47,68, 84则所采用的排序方法是 ( )。 ( A)选择排序 ( B)希尔排序 ( C)归并排序 ( D)快速排序 8 适于对动态查找表进行高效率查找的组织结构是 ( )。 ( A)有序表 ( B)分块
4、有序表 ( C)三叉排序树 ( D)线性链表 9 不定长文件是指 ( )。 ( A)文件的长度不固定 ( B)记录的长度不固定 ( C)字段的长度不固定 ( D)关键字项的长度不固定 10 n个顶点的连通图至少有 ( )条边。 ( A) n-1 ( B) n ( C) n+1 ( D) 0 11 下列实现 C语言语句 printf(“Hello!“)的相同功能的语句是 ( )。 ( A) cout “Hello!“ ( B) cin “Hello!“ ( C) cout “Hello!“ ( D) cin “Hello!“ 12 下面关于数组的初始化正确的是 ( )。 ( A) chara=a
5、, b, c ( B) chara2=a, b, c ( C) chara23=a, b, e, d, e, f ( D) chara=“a“, “b“, “c“ 13 下面是关于静态成员的说法,其中不正确的是 ( )。 ( A)静态函数没有 this指针 ( B)同一个类的不同对象拥有相同的静态数据成员 ( C)静态数据成员的初始化必须在类外进行 ( D)静态函数可以访问所有数据成员 14 类的析构函数的作用是 ( )。 ( A)一般成员函数的初始化 ( B)类的初始化 ( C)对象的初始化 ( D)删除类创建的对象 15 下列关于 C+多态性的叙述,正确的是 ( )。 ( A) C+语言的
6、多态性分为编译时的多态性和运行时的 多态性 ( B)编译时的多态性可通过虚函数实现 ( C)运行时的多态性可通过函数重载实现 ( D)运行时的多态性可通过操作符重载实现 16 不能重载的运算符是 ( )。 ( A) + ( B) / ( C) * ( D) - 17 下列关于重载函数的调用时选择的依据中,错误的是 ( )。 ( A)根据函数参数个数不同 ( B)根据函数参数类型不同 ( C)根据函数名字不同 ( D)根据函数的返回值不同 18 C+程序的执行是从 ( )开始执行的 ? ( A) main函数 ( B)程序的第一行 ( C) iostream.h ( D) stdio.h 19
7、下列关于动态联编的叙述中,错误的是 ( )。 ( A)动态联编的基础是虚函数 ( B)动态联编时在运行时确定所调用的函数代码 ( C)只有通过基类的指针或引用才能实现动态联编 ( D)重载也是动态联编 20 设 A是一个类的类名,下面函数的参数的引用形式是 ( )。 ( A) function(A i n;i+) if(ai m)_; return m; 43 重载的关系运算符和逻 辑运算符的返回类型应当是 _。 44 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其输出结果是 _。 #include iostream u
8、sing namespace std; class Base public: void print()cout B;; class Derived:public Base public: void print()cout D; int main() Derived* pd=new Derived(); Base* pb=pd; pb- print(); pd- print(); delete pd; return 0; 45 对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用_的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构 造函数体中的内容。 46 动态多态性通过
9、 _实现。 47 执行下列程序的输出结果是 _: #include iostream using namespace std; class TestClass1 public: void fun1()cout “TestClass1n“; virtual void fun2()cout “TestClass1n“; ; class TestClass2:public TestClass1 public: void fun1()cout “TestClass2n“; void fun2()cout “TestClass2n“; ; void f(TestClass1b.fun2(); int m
10、ain() TestClass2 obj; f(obj); return 0; 48 定义一个函数名为 fun,返回值为 int,没有参数的纯虚 函数的定义是 _。 49 重新定义标识符的作用域规定是外层变量被隐藏, _变量是可见的。 50 如果表达式 x=y*z 中的 “*”是作为成员函数重的运算符,采用运算符函数调用格式,该表达式还可以表示为 _。 国家二级( C+)笔试模拟试卷 128答案与解析 1 【正确答案】 C 【试题解析】 设有一个 10阶的对称矩阵 A1010,采用压缩存储方式按行将矩阵中下三角部分的元素存入一维数组 B中, A00存入 B0中,则 A85在 B中 41=1+2
11、+3+4+ 5+6+7+8+5位置。 2 【正确答案】 C 【试题解析】 具体方法是: 将森林中的每棵树变为二叉树。 因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。 3 【正确答案】 B 【试题解析】 在一个无向图中,所有顶点的度数之和等于所有边数的 2倍。 4 【正确答案】 B 【试题解析】 由两个栈共享一个向量空间的好处是节省存储空间,降低上溢发生的几率。 5 【正确答案】 D 【试题解 析】 设数组 datam作为循环队列 SQ 的存储空间, front为队头指针,rear为队尾指针,则执行出队操作后其头指针 front值
12、为 front=(front+1)%m。 6 【正确答案】 D 【试题解析】 一个非空广义表的表头可以是子表或原子。 7 【正确答案】 D 【试题解析】 快速排序的基本思想是基于分治策略的。对于输入的子序列Lp r,如果规模足够小则直接进行排序,否则分三步处理: 分解 (Divide):将输入的序列 Lp r划分成两个非空子序列 Lp q和Lq+1 r,使 Lp q中任一元素的值不大于 Lq+1 r中任一元素的值。 递归求解 (Conquer):通过递归调用快速排序算法分别对 Lp q和Lq+1 r进行排序。 合并 (Merge):由于对分解出的两个子序列的排序是就地进行的,所以在Lp q和
13、Lq +1 r都排好序后不需要执行任何计算 Lp r)就已排好序。 8 【正确答案】 C 【试题解析】 适于对动态查找表进行高效率查找的组织结构是三叉排序树。 9 【正确答案】 B 【试 题解析】 不定长文件是指记录的长度不固定。 10 【正确答案】 A 【试题解析】 n 个顶点的连通图至少有 n-1条边。 11 【正确答案】 C 【试题解析】 C+输出语句语法。 12 【正确答案】 D 【试题解析】 “ “是字符串符号,而不是字符符号。 13 【正确答案】 D 【试题解析】 只有静态函数才能访问静态成员。 14 【正确答案】 C 【试题解析】 构造函数的目的是对象初始化。 15 【正确答案】
14、 C 【试题解析】 运行时的多态性可通过函 数重载实现。 16 【正确答案】 C 【试题解析】 在 C+中,不能重载的运算符有 6个,它们是 “ ”, “*”, “- ”,“: ”, “sizeof”和三目运算符 “?: ”。 17 【正确答案】 C 【试题解析】 函数的重载要求函数名相同。 18 【正确答案】 A 【试题解析】 从主函数开始执行。 19 【正确答案】 D 【试题解析】 重载是静态联编。 20 【正确答案】 A 【试题解析】 重载的语法。 21 【正确答案】 A 【试题解析】 由于只有第三 个参数有默认值,故要求给出前两个参数的值。 22 【正确答案】 B 【试题解析】 c是
15、a的引用,故 a+相当于 c+。 23 【正确答案】 B 【试题解析】 函数的参数是引用,故能实现引用调用。 24 【正确答案】 B 【试题解析】 此处为函数的重载,第一个参数为 int,第二个参数为 float,故执行第二个函数。 25 【正确答案】 A 【试题解析】 对象创建的次序为:先基类,后派生类;析构时,先派生类,后基类。 26 【正确答案】 A 【试题解析】 A: 表示 A的作用域。 27 【正确答案】 B 【试题解析】 类继承方式有三种,它们分别是公有、私有和保护。 28 【正确答案】 A 【试题解析】 C+派生格式。 29 【正确答案】 C 【试题解析】 ShowAse是类的公
16、有成员,可以由对象访问,其他的为私有成员,类对象不能访问。 30 【正确答案】 D 【试题解析】 由于是私有继承,基类中所有成员成为派生类中的私有成员,故不能由派生类的对象访问,只有派生类的公有成员可由派生类对象访问。 31 【正确答案】 A 【试题解析】 构造函数不能是虚函数。 32 【正确答案】 A 【试题解析】 函数名、参数及返回值必须与基类中对应的虚函数完全相同。 33 【正确答案】 C 【试题解析】 构造函数不能有返回值。 34 【正确答案】 C 【试题解析】 参见引用的语法。 35 【正确答案】 D 【试题解析】 virtual 是虚函数的标志,而不是返回值的标志。 36 【正确答
17、案】 自顶向下 【试题解析】 程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设 计一些子目标作为过渡。上述方法概括为:自顶向下,逐步求精。 37 【正确答案】 功能性 【试题解析】 注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释的位置一般嵌在源程序体中,主要描述其后的语句或程序做什么。 38 【正确答案】 对象 【试题解析】 在面向对象的程序设计方法中,类是具有相同属性或方法的对象的抽象,对象是类的实例。 39 【正确答案】 19 【试题解析】 在任意一棵二叉树中,度数为 0的结点 (即叶子结点 )总比度 为
18、 2的结点多一个,因此该二叉树中叶子结点为 18+1=19。 40 【正确答案】 变换型 【试题解析】 典型的数据流类型有两种:变换型和事务型。 41 【正确答案】 x=y-z 【试题解析】 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即 y.operator-(z)或者 operator-(y,z);另一种是通过运算符构成表达式,即 y-z。 42 【正确答案】 m=ai 【试题解析】 此题考查的是函数模板、 if语句、 for循环等知识点。函数模板max()的功能 是返回数组 a中最大元素的值,所以当 ai是最大值时,应将 ai的值赋值给 m。 43 【正确答案】 boo
19、l 【试题解析】 关系运算符和逻辑运算符重载后只能是 true或者 false,即返回值为 bool 型。 44 【正确答案】 BD 【试题解析】 因为本题中的 print()函数不是虚函数,所以通过基类指针 pb 调用的 print()函数,是基类中的版本,而通过派生类指针 pb调用的 print()函数是派生类中的版本。因此,程序运行时会先输出一个字符 B,然后输出字符 D。 45 【正确 答案】 基类 【试题解析】 对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行调用基类的构造函数,再执行调用子对象类的构造函数,最后执行派生类的构造函数体中的内容。 46 【正确答案】 虚函
20、数 【试题解析】 动态多态性是在程序运行过程中才动态确定操作所针对的对象。动态多态性是通过虚函数实现的。 47 【正确答案】 TestClass1 TestClass2 【试题解析】 主函数中首先定义 TestClass2 对象 obj,然后执行 “f(obj);”。 “void f(TestClass1b.fun2();”语句中 fun 中参数为 TestClass1 类型的对象b,其中调用 fun1()和 fun2()。基类 TestClass1 中的 fun2()为虚函数,所以派生类中的 fun2也是虚函数,所以输出为调用 TestClass1中的 fun1, TestClass2 中的
21、fun2。即结果为 TestClass1 和 TestClass2。 48 【正确答案】 virtual int fun()=0; 【试题解析】 纯虚函数是在声明虚函数时被 “初始化 ”为 0的函数。定义的 一般形式为: virtual 函数类型函数名 (参数列表 )=0。所以,根据题目要求,答案为“virtual int fun()=0;”。 49 【正确答案】 内层 【试题解析】 重新定义标识符的作用域规定是外层变量被隐藏,内层变量可见。 50 【正确答案】 x=y.operator*(z)或 x=y.operator*(z) 【试题解析】 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即 y.operator*(z)或者 operator*(y,z);另一种是通过运算符构成表达式,即y*z。