1、国家二级( C+)笔试模拟试卷 129及答案与解析 1 树是结点的集合,它的根结点数目是 ( )。 ( A)有且只有 1 ( B) 1或多于 1 ( C) 0或 1 ( D)至少 2 2 为了提高测试的效率,应该 ( )。 ( A)随机选取测试数据 ( B)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 3 在设计程序时,应采纳的原则之一是 ( )。 ( A)不限制 goto语句的使用 ( B)减少或取消注解行 ( C)程序越短越好 ( D)程序结 构应有助于读者理解 4 程序设计语言的基本成分是数据成分、运算成分、控制成分和 (
2、 )。 ( A)对象成分 ( B)变量成分 ( C)语句成分 ( D)传输成分 5 下列叙述中正确的是 ( )。 ( A)线性表是线性结构 ( B)栈与队列是非线性结构 ( C)线性链表是非线性结构 ( D)二叉树是线性结构 6 下列说法错误的是 ( )。 ( A)方法是对象的一部分 ( B)在调用方法时,对象名是不可缺少的 ( C)方法是一种特殊的过程和函数 ( D)方法的调用格式和对象属性的使用格式相同 7 n个顶点的强连通图的边数至少有 ( )。 ( A) n-1 ( B) n(n-1) ( C) n ( D) n+1 8 模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是
3、模块的( )。 ( A)抽象和信息隐蔽 ( B)局部化和封装化 ( C)内聚性和耦合性 ( D)激活机制和控制方法 9 软件开发的结构化生命周期方法将软件生命周期划分成 ( )。 ( A)定义、开发、运行维护 ( B)设计阶段、编程阶段、测试阶段 ( C)总体设计、详细设计、编程调试 ( D)需求分析、功能定义、系统设计 10 下列不属于软件工程三要素的是 ( )。 ( A)工具 ( B)过程 ( C)方法 ( D)环境 11 下列关于构造函数的叙述错误的是 ( )。 ( A)构造函数的作用就是在对象被创建时利用特定的值构造对象 ( B)构造函数在被创建的时候由系统自动调用 ( C)构造函数可
4、以被重载 ( D)构造函数可以与类名不一样 12 类型修饰符 unsigned修饰 ( )是错误的。 ( A) char ( B) int ( C) long int ( D) float 13 当一个函数无返回值时,定义它的函数 类型应是 ( )。 ( A) void ( B)任意 ( C) int ( D)无 14 下列属于引用调用的是 ( )。 ( A)形参是指针,实参是地址值 ( B)形参和实参都是变量 ( C)形参是数组名,实参是数组名 ( D)形参是引用,实参是变量 15 采用重载的目的在于 ( )。 ( A)实现共享 ( B)减少空间 ( C)递归调用 ( D)嵌套调用 16 在
5、函数说明时,下列不必要的是 ( )项。 ( A)函数参数的类型 ( B)函数参数名字 ( C)函数的名字 ( D)返回值表达式 17 不是面向对象系统包含的要素的是 ( )。 ( A)重载 ( B)对象 ( C)类 ( D)继承 18 C+对 C语言作最大的改进是 ( )。 ( A)增加了一些新的运算符 ( B)允许函数重载 ( C)规定函数说明必须用原型 ( D)引进了类和对象的概念 19 在 int a5=1, 3, 5;中, a1的值是 ( )。 ( A) 0 ( B) 1 ( C) 3 ( D) 5 20 在 int a=3, *p= ; class TestClass2 public
6、:TestClass2()cout “B“; ; class TestClass3;public TestClass1 TestClass2 b; public:TestClass3()cout “C“; ; int main() TestClass3 obj;return 0; 该程序执行后的输出结果是 _。 43 编译时的多态性可以通过使用 _获得。 44 如果使用数组名称为函数参数,形实结合时,传递的是 _。 45 在类的对象被创建时, _函数会被自动调用。 46 下列程序的执行结果是 _。 #include iostream.h #include iomanip.h using nam
7、espace std; voidmain() cout setfill(x) setw(10); cout “Hello“ end1; 47 请将下列类定义补充完整。 class Base(public:void fun()cout “Base:fun“ endl;; class Derived:public Base public: void fun() _ /显式调用基类的 fun函数 cout “Derived:fun“ endl; ; 48 有如下程序: #include iostream using namespace std; class ONE public: virtual v
8、oid f()cout “1“; ; class TWO:public ONE public: TWO()cout “2“; ; class THREE: public TWO public: vurtual void f() TOW:f();cout “3“; ; int main() ONE aa,*p; TWO bb; THREE cc; p= /给 Foo的数据成员 value赋值 void print()cout value; ; int main() Foo f; f.setValue(42); f.print(); return 0; 51 在双目运算符中需要声明其右操作数时,完
9、成的是【 】重载,而需要声明全部操作数时,完成的是【 】重载。 52 在编译时才确定的函数调用称为【 】,它是通过使用【 】来实现的。 53 将下面程序补充完整。 #include iostream using namespace std; class Base public: 【 】 fun()return 0; /声明虚函数 ; class Derived: public Base public: x, y; void SetVal(int a, int b) int fun()return x+y; ; void 【 】 SetVal(int a, int b)x=a; y=b; /类
10、Derived成员函数 void main() Derived d; cout d fun() endl; 国家二级( C+)笔试模拟试卷 129答案与解析 1 【正确答案】 A 【试题解析】 树是结点的集合,它的根结点数目是有且只有一个结点。 2 【正确答案】 D 【试题解析】 为了提高测试的效率,应该集中对付那些错误群集的程序。 3 【正确答案】 D 【试题解析】 在设计程序时,应采纳的原则之一是程序结构应有助于读者理解。 4 【正确答案】 D 【试题解析】 程序设计语言的基本成分是数据成分、运算成分、控制成分和传输成分。 5 【正确答案】 A 【试题解析】 线性表、栈、队列、线性链表都是
11、线性结构。 6 【正确答案】 B 【试题解析】 在调用方法时,对象名可以缺少。 7 【正确答案】 C 【试题解析】 n 个顶点的强连通图至少有 n条边。 8 【正确答案】 C 【试题解析】 衡量模块独立性的度量标准则是模块的内聚性和耦合性。 9 【正确答案】 A 【试题解析】 软件开发的结构化生命周期方法将软件生命周 期划分成定义、开发和运行维护。 10 【正确答案】 D 【试题解析】 软件工程三要素是工具、过程、方法。 11 【正确答案】 D 【试题解析】 构造函数必须与类名相同。 12 【正确答案】 A 【试题解析】 没有 unsigned char这种数据类型。 13 【正确答案】 A
12、【试题解析】 函数返回值类型 void,表示函数没有返回值。 14 【正确答案】 D 【试题解析】 当引用作函数的参数时,形参是引用,实参是变量,而不是取地址符。 15 【正确答案】 A 【试题解析】 重载是实现函数名共享的机制。 16 【正确答案】 B 【试题解析】 在函数说明时,函数参数的名字可以省略,但在函数实现时,需指明。 17 【正确答案】 A 【试题解析】 重载不是面向对象的机制。 18 【正确答案】 D 【试题解析】 C+对 C的最大改动是增加了面向对象机制。 19 【正确答案】 C 【试题解析】 数组的下标是从 0开始的。 20 【正确答案】 A 【试题解析】 *p 表示指针
13、p指向的内容,而语句 *p=&a将 a的地址传递 给 *p。 21 【正确答案】 A 【试题解析】 派生的语法。 22 【正确答案】 B 【试题解析】 派生类在构造时,先调用基类的构造函数。 23 【正确答案】 D 【试题解析】 构造函数不能有返回值。 24 【正确答案】 C 【试题解析】 纯虚函数的语法。 25 【正确答案】 D 【试题解析】 保护成员的语法。 26 【正确答案】 A 【试题解析】 endl 与 n的作用相同。 27 【正确答案】 D 【试题解析】 类声明的格式。 28 【正确答案】 B 【试题解析】 局部变量只在局部有效。 29 【正确答案】 B 【试题解析】 静态成员只能
14、在类的外部定义,并且只定义一次。 30 【正确答案】 A 【试题解析】 C+模板包括类模板和函数模板。 31 【正确答案】 B 【试题解析】 如果函数没有返回值,则对于函数的返回值说明用 void。 32 【正确答案】 A 【试题解析】 ia应进行取地址操作。 33 【正确答案】 C 【试题解析】 派生类的指针不能指向基类。 34 【正确 答案】 A 【试题解析】 析构函数不可以重载。 35 【正确答案】 D 【试题解析】 没有友元继承这种继承方式。 36 【正确答案】 插入排序 【试题解析】 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、交换排序和选择排序等。 37 【正确
15、答案】 存储 【试题解析】 数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关。 38 【正确答案】 3次 【试题解析】 第一次和中间的值 (7)比较,由于比其大,因此第二次和右侧子表中的中间值 (11)比较,由于比其小,第三次再和左侧子表中间值 (9)比较。 39 【正确答案】 原则 【试题解析】 软件工程的框架可概括为:目标、过程和原则三部分。 40 【正确答案】 非聚簇索引 【试题解析】 根据索引的顺序与数据表的物理顺序是否相同可以分为:聚簇索引和非聚簇索引,聚簇索引重新组织表中的数据以按指定的一个或多个列的值排序;非聚簇索引不重新组织表中的数据。 41 【正确答案】 同名函数
16、 【试题解析】 如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,这样存在的同名函 数无法判断调用的确定性。即存在二义性。 42 【正确答案】 ABC 【试题解析】 主函数中定义 TestClass3 对象 obj,其中 TestClass3 继承于TestClass1,先初始化基类构造函数,所以输出 A。然后在 TestClass3 中定义TestClass2对象 b,输出 B,最后派生类的构造函数输出 C。所以答案为 ABC。 43 【正确答案】 虚函数和对象 【试题解析】 多态性是指一个接口,多种方法。而虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且通过基类指针
17、或引用来访问基 类和派生类中的同名函数。通过对象名调用的虚函数,是在运行阶段把虚函数和类对象 “绑定 ”在一起的。 44 【正确答案】 地址 【试题解析】 此题考查的是函数参数的传递方式。函数参数的传递方式分为传值和传地址两种。使用数组名作为函数参数,因为数组名代表的是数组的首地址,所以传递的是地址。 45 【正确答案】 构造 【试题解析】 此题考查的是构造函数的应用。构造函数的作用是在对象被创建时利用特定的值构造对象,构造函数在对象被创建时由系统自动调用。 46 【正确答案】 xxxxxHello 【试题解析】 此题考查的是 I/O 的格式化输出。 Setfill(x)表示填充字符为 V,并
18、且一直有效; setw(10)表示将输入输出的宽度设置为 10,宽度设置的效果只对以此次输入或输出有效,在完成一个数据的输入或输出后,宽度自动恢复为 0;题目中字符串 “Hello”的宽度不够 10,所以其前面将有 5个填充符 V。 47 【正确答案】 Base:fun(); 【试题解析】 此题考查的是虚基类的使用。使用符号 “:”可以用来限定要访问的成员所在类的名称。在派生类中对基类成员的访问应该是唯一的,但是,多 继承情况下就需要通过使用对象作用域分辨来解决这种对基类成员访问的二义性问题。 48 【正确答案】 2213 【试题解析】 此题考查的是派生类的构造和析构函数。建立 TWO的对象
19、bb时,调用 TWO 的构造函数,输出 “2”: THREE 类又派生于 TWO类,所以建立THREE 类的对象 cc时,又会输出 “2”; ONE类的对象指针 p 又指向了 THREE类的 ONE类的虚函数 f(),输出 “1”;最后调用 THREE类的 f(),输出 “3”。故最终的输出结果是 2213。 49 【正确答案】 pfivate 【试题解析 】 因为 Derived类私有继承 Base类,所以 Base类中的公有和保护成员成为 Derived类的私有成员, Base类的保护成员在 Derived 类中不可访问。因此, Base类中的保护成员函数 fun()在 Derived 类
20、中的访问权限是 ptivate。 50 【正确答案】 this- value或 Foo:value 【试题解析】 由于 Foo类的数据成员和函数的形参名称都是 value,如果在函数中直接使用 value引用的是形参变量而不是 Foo类的数据成员。解决办法有两种:一是通过 this 指针,在类的成 员函数中 this代表函数所属对象的指针,即可填this- value;二是通过作用域运算符 “:”明确指出访问的是 Foo类的成员,所以还可填入 Foo:value。 51 【正确答案】 类成员函数 友元函数 【试题解析】 单目运算符作为类成员函数重载时没有形参;双目运算符作为类成员函数重载时需声明其右操作数;作为友元函数重载时需要声明全部操作数。 52 【正确答案】 静态联编、重载函数 【试题解析】 静态联编的定义:在编译时才确定的函数调用称为静态联编,它是通过使用重载函数来实现的 。 53 【正确答案】 virtual int Derived: 【试题解析】 virtual int用于声明虚函数; Derived:用于指定类 Derived成员函数。