1、国家二级( C+)笔试模拟试卷 172及答案与解析 1 下列数据结构中,按先进后出原则组织数据的是 ( A)线性链表 ( B)栈 ( C)循环链表 ( D)顺序表 2 具有 3个节点的二叉树有 ( A) 2种形态 ( B) 4种形态 ( C) 7种形态 ( D) 5种形态 3 设有下列二叉树: 对此二叉树前序遍历的结果为 ( A) ZBTYCPXA ( B) ATBZXCYP ( C) ZBTACYXP ( D) ATBZXCPY 4 结构化程序设计主要强调的是 ( A)程序的规模 ( B)程序的效率 ( C)程序设计语言的先进性 ( D)程序易读性 5 程序的 3种基本控制结构是 ( A)过
2、程、子过程和分程序 ( B)顺序、选择和重复 ( C)递归、堆栈和队列 ( D)调用、返回和转移 6 下列叙述中,不属于测试的特征的是 ( A)测试的挑剔性 ( B)完全测试的不可能性 ( C)测试的可靠性 ( D)测试的经济性 7 需求分析中开发人员要从 用户那里了解 ( A)软件做什么 ( B)用户使用界面 ( C)输入的信息 ( D)软件的规模 8 下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是 ( A)选择 ( B)连接 ( C)投影 ( D)并 9 下列叙述中,正确的是 ( A)用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 ( B
3、)用 E-R图只能表示实体集之间一对一的联系 ( C)用 E-R图只能表示实体集之间一对多的联系 ( D)用 E-R图表示的概念数据模型只能转换为关系数据模型 10 “年龄在 18 25之间 ”这种约束是属于数据库当中的 ( A)原子性措施 ( B)一致性措施 ( C)完整性措施 ( D)安全性措施 11 以下哪个特征不是面向对象思想中的主要特征 ? ( A)多态 ( B)继承 ( C)封装 ( D)垃圾回收 12 以下哪个不是 C+语言中的有效标识符 ? ( A) 34a ( B) _AB ( C) A_B ( D) A25 13 C+中运算符优先级由高到低排列正确的是 ( A) : + +
4、 | ( B) * | , ( C) sizeof % + : ( D) , new sizeof 14 下面程序的运行结果是 #include“iostream.h“ #define sum(a,b)a*b void main() int x; X sum(1+2,3); cout x; ( A) 0 ( B) 9 ( C) 7 ( D) 5 15 以下 for语句中不是死循环的是 ( A) for(int i 0;i 1;+i); ( B) for(int i 0;+i); ( C) for(int i 1;i 0;+i); ( D) for(;); 16 关于 continue语句叙述不
5、正确的是 ( A) continue语句用于循环体中,结束循环 ( B) continue语句用于循环体中,它使执行流跳出循环体中尚未执行的语句,并进行下一循环判断 ( C) continue可以用于 if语句中 ( D) continue语句不能代替 break语句 16 以下定义数组中错误的是 ( A) int a10; ( B) int a2120; ( C) int a20; D)int a; ( D) C 17 下面程序的执行结果是 #include“iostream.h“ void main() int*p,r; pnew int; *p 20; r sizeof(*p); cou
6、t r endl; delete p; ( A)程序错误 ( B)内存为 20地址的大小 ( C) 20 ( D) 4 18 下面程序错误的语句是 #include“iostream.h“ void main() int A 0; int B; B A; cout B; cout A; ( A) ( B) ( C) ( D) 19 函数 int test(int a,int b 1,int c 0),下列调用不合法的个数是 test(0); test(0,0);test();test(0,0,0); ( A) 0 ( B) 1 ( C) 2 ( D) 3 20 C+语言中类定义中默认的访问权限
7、是 ( A) public ( B) protected ( C) private ( D) default 21 C+语言中关于构造函数的说法正确的是 ( A)构造函 数的函数名不必和类名相同 ( B)构造函数只能有一个 ( C)每个类必定有构造函数 ( D)构造函数必有返回值 22 关于构造函数 A()的拷贝构造函数正确的是 ( A) A(A*B); ( B) A(AB); ( C) A(A B); ( D) A(A); 23 下面程序的执行结果为 #includ“iostream“ using namespace std; class A int a; public: void Seta
8、(int x) a x; void Display_a() cout a endl; ; class B int b; public: void Setb(int x) b x; void ( A)输出为 2 2 3 ( B)有错误在第 5行 ( C)输出为 1 2 3 ( D)有错误在第 7行 24 虚函数必须是类的 ( A)成员函数 ( B)友元函数 ( C)构造函数 ( D)析构函数 25 多态性指的是 ( A)以任何方式调用一个虚函数 ( B)以任何方式调用一个纯虚函数 ( C)借助于指向对象的基类指针或引用调用一个虚函数 ( D)借助于指向对象的基类指针或引用调用一个纯虚函数 26
9、不能重载的运算符是 ( A) new ( B) sizeof ( C) * ( D) + 27 只能作为成员函数重载的是 ( A) ( B) + ( C) * ( D) new 28 关于 模板,下列说法不正确的是 ( A)用类模板定义一个对象时,不能省略实参 ( B)类模板只能有虚拟类型参数 ( C)类模板本身在编译中不会生成任何代码 ( D)类模板的成员函数都是模板函数 29 语句 cout setprecision(2) 1024.4567;的输出结果为 ( A) 1024.4567 ( B) 1024 ( C) 1024.45 ( D) le+003 30 下面程序的结果为 #incl
10、ude“iostream.h“ void change(int a,int B) int temp; temp a; a b; b temp; void main() int m,n; m 8; n 9; change(m,n); cout m “ “ n endl; ( A) 8 9 ( B) 9 8 ( C)程序有错误 ( D) 9 9 31 下面程序的结果是 #include“iostream.h“ void main() char*str; Str“test!“; cout str5; ( A)程序错误 ( B) ! ( C) 0 ( D)为空字符 32 下面程序输出的结果为 #inc
11、lude“iostream.h” class A public: A() cout “CLASSA“ endl; A() ; class B:public A public: B() cout “CLASS B“ endl; B() ; void main() A*p; p new B; ( A) CLASS A CLASS B CLASS B CLASS B ( B) CLASS A CLASS B CLASS A CLASS B ( C) CLASS A CLASS B CLASS B ( D) CLASS A CLASS B 33 C+语言函数中不能由系统自动生成的是 ( A)析构函数
12、( B)构造函数 ( C)内联函数 ( D)复制构造函数 34 在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 _实际上对应一个处理模块。 35 结构化程序设计的 3种基本结构分别是顺序、选择和 _。 36 二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是_。 37 一个模块直接调用的其他模块的个数称为 _。 38 数据库系统中实现各种数据管理功能的核心软件是 _。 39 在多继承的基类和派生类中同时出现 _存在二义性。 40 有下列程序: #include iostream using namespace std; class TestClass
13、1 public: TestClass1()cout “A“; ; class TestClass2 public:TestClass2()cout “B“; ; class TestClass3:public TestClass1 TestClass2 b; 41 编译时的多态性可以通过使用 _获得。 42 如果使用数组名称为函数参数,形实结合时,传递的是 _。 43 在类的对象被创建时, _函数会被自动调用。 44 下列程序的执行结果是 _。 #include ioStream.h #include iomanip.h using namespace std; void main() co
14、ut setfill(x) setw(10); cout “Hello“ end1; 45 请将下列类定义补充完整。 class Basepublic:void fun()cout “Base fun“ end1; c1ass DehVed:public Base public: void fun() _ 显式调用基类的 fun函数 cout “Derived fun“ endl; ; 46 有下列程序: #include iostream using namespace std; class ONE public: virtual void f()COUt “1“; ; c1assTWO:p
15、ublic ONE public: TWO()cout “2“; ; class THREE:public TWO pub 47 在声明派生类时,如果不显式地给出继承方式,缺省的类继承方式是私有继承private。已知有如下类定义: class Base protected: void fun() ; class Derived:Base; 则 Base类中的成员函数 fun(),在 Derived类中的访问权限是 _(注意:要求填写 private、 protected或 public中的一项 )。 48 已知下列程序的输出结果是 42,请将横线处缺失的部分补充完整。 #include io
16、stream using namespace std; class Foo int value; public: Foo():value(0) void setValue(int value) _=value; 给 Foo的数据成员 value赋值 国家二级( C+)笔试模拟试卷 172答案与解析 1 【正确答案】 B 2 【正确答案】 D 3 【正确答案】 B 4 【正确答案】 D 5 【正确答案】 B 6 【正确答案】 C 7 【正确答案】 A 8 【正确答案】 B 9 【正确答案】 A 10 【正确 答案】 C 11 【正确答案】 D 12 【正确答案】 A 13 【正确答案】 A 14
17、 【正确答案】 C 15 【正确答案】 A 16 【正确答案】 A 17 【正确答案】 D 18 【正确答案】 C 19 【正确答案】 C 20 【正确答案】 C 21 【正确答案】 C 22 【正确答案】 C 23 【正确答案】 D 24 【正确答案】 A 25 【正确答案】 C 26 【正确答案】 C 27 【正确答案】 A 28 【正确答案】 B 29 【正确答案】 D 30 【正确答案】 A 31 【正确答案】 D 32 【正确答案】 C 33 【正确答案】 C 34 【正确答案】 加工 【试题解析】 数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程,其中的每一
18、个加工对应一个处理模块。 35 【正确答案】 重复 (或循环 ) 【试题解析】 结构化程序设计包括 3种基本的结构:顺序结构、选择结构和重复结构 (循环结构 )。利用这 3种结构就足以表达出各种其他结构形式的程序设计方法,其中利用循 环结构,可以简化大量的程序执行。 36 【正确答案】 顺序存储 (顺序方式存储 ) 【试题解析】 二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。 37 【正确答案】 扇出 【试题解析】 在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。 38 【正确答案】 数据库管理系统 【试题解析】
19、 数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据 服务等。 39 【正确答案】 同名函数 【试题解析】 如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,这样存在的同名函数法判断调用的确定性。即存在二义性。 40 【正确答案】 ABC 【试题解析】 主函数中定义 TestClass3对象。 obj,其中 TestClass3继承于TestClass1,先初始化基类构造函数,所以输出 A。然后在 TestClass3中定义TestClass2对象 b,输出 B,最后派生类的构造函数输出 C。所答案为 ABC。 41
20、【正确答案】 虚函 数和对象 【试题解析】 多态性是指一个接口,多种方法。而虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且通过基类指针或引用来访问基类和派生类中的同名函数。通过对象名调用的虚函数,可以在运行阶段把虚函数和类对象 “绑定 ”在一起。 42 【正确答案】 地址 【试题解析】 此题考查的是函数参数的传递方式。函数参数的传递方式分为传值和传地址两种。使用数组名作为函数参数,因为数组名代表的是数组的首地址,所以传递的是地址。 43 【正确答案】 构造 【试题解析】 此题考查的是构造 函数的应用。构造函数的作用是在对象被创建时利用特定的值构造对象,构造函数在对象被创建时由系统自
21、动调用。 44 【正确答案】 xxxxxHello 【试题解析】 此题考查的是 I/O的格式化输出。 Setfill(x)表示填充字符为 x,并且一直有效; setw(10)表示将输入输出的宽度设置为 10,宽度设置的效果只对以此次输入或输出有效,在完成一个数据的输入或输出后,宽度自动恢复为 0;题目中字符串 “Hello“的宽度不够 10,所以其前面将有 5个填充符 x。 45 【正确答案】 Base fun(); 【试题解析】 此题考查的是虚基类的使用。使用符号 “ ”可以用来限定要访问的成员所在的类的名称。在派生类中对基类成员的访问应该是唯一的,但是,多继承情况下就需要通过使用对象作用域
22、分辨来解决这种对基类成员访问的二义性问题。 46 【正确答案】 2213 【试题解析】 此题考查的是派生类的构造和析构函数。建立 TWO的对象 bb时,调用 TWO的构造函数,输出 “2”; THREE类又派生于 TWO类,所以建立THREE类的对象 cc时又会输出 “2”; ONE类的对象指针 p指向了 THREE类的ONE类的虚函数 f(),输出 “1”;最后调用 THREE类的 f(),输出 “3”。故最终的输出结果是 2213。 47 【正确答案】 private 【试题解析】 因为 Derived类私有继承 Base类,所以 Base类中的公有和保护成员成为 Derived类的私有成员, Base类的保护成员在 Derived类中不可访问。因此, Base类中的保护成员函数 fun()在 Derived类中的问权限是 private。 48 【正确答案】 this- value或 Foo value 【试题解析】 由于 Foo类 的数据成员和函数的形参名称都是 value,如果在函数中直接使用 value引用的是形参变量而不是 Foo类的数据成员,解决办法有两种:一是通过 this指针,在类的成员函数中 this代表数所属对象的指针,即可填 this- value;二是通过作用域运算符 “ ”明确指出访问的是 Foo类的成员,所以还可入 Foo value。