1、国家二级 C+机试(选择题)模拟试卷 41 及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)循环队列是队列的一种链式存储结构 ( B)循环队列是队列的一种顺序存储结构 ( C)循环队列是非线性结构 ( D)循环队列是一种逻辑结构 2 下列关于线性链表的叙述中,正确的是 ( )。 ( A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 ( B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 ( C)进行插入与删除时,不需要移动表中的元素 ( D)以上说法均不正确 3 一棵二叉树共有 25个结点,其中 5个是叶子结点,则度为 1的结点数为
2、 ( ) ( A) 16 ( B) 10 ( C) 6 ( D) 4 4 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是 ( )。 ( A)外模式 ( B)内模式 ( C)概念模式 ( D)逻辑模式 5 在满足实体完整性约束的条件下 ( )。 ( A)一个关系中应该有一个或多个候选关键字 ( B)一个关系中只能有一个候选关键字 ( C)一个关系中必须有多关键字个候选 ( D)一个关系中可以没有候选关键字 6 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)交 ( C)除 ( D)并 7 下面描述中,不属于软件危机表现的是
3、 ( )。 ( A)软件过程不规范 ( B)软件开发生产率低 ( C)软件质量难以控制 ( D)软件成本不断提高 8 下面不属于需求分析阶段任务的是 ( )。 ( A)确定软件系统的功能需求 ( B)确定软件系统的性能需求 ( C)需求规格说明书评审 ( D)制定软件集成测试计划 9 在黑盒测试方法中,设计测试用例的主要根据是 ( )。 ( A)程序内部逻辑 ( B)程序外部功能 ( C)程序数据结构 ( D)程序流程图 10 在软件设计中不使用的工具是 ( )。 ( A)系统结构图 ( B) PAD图 ( C)数据流图 (DFD图 ) ( D)程序流程图 11 下列术语中,能表明面向对象思想
4、主要特征的是 ( A)封装性 ( B)灵活性 ( C)安全性 ( D)可靠性 12 有如下程序段: int i=2;int j=3; int main() int i=9, j=i; cout ( C) = using namespace std; class Base public: void fun() coutfun(); ( C) Base:fun(); ( D) fun(); 29 有如下类定义: class Cup public: void SetPrice(double val); private: double price; ; 若要在类体外给出对成员函数 SetPrice的定
5、义,下列选项 中正确的是 ( A) void Cup:SetPrice(double val) price=val; ( B) void Cup.SetPrice(double val) price=val; ( C) void SetPrice(double val) Cup:price=val; ( D) void SetPrice(double val) Cup.price=val; 30 有如下类定义: class Box public: Box(int h,int w,int l):width(w),length(l),height(h) private: int length,wi
6、dth,height; ; Box 类中 3个数据成员的初始化顺序为 ( A) length,height,width ( B) length,width,height ( C) height,width,lenth ( D) width,length,height 31 有如下程序 : #include #include using namespace std; class MyBag public: MyBag(string br,string cr):brand(br),color(cr) +count; MyBag() -count; static int GetCount() ret
7、urn count; private: string brand,color; static int count; ; int MyBag:count=0; int main() MyBag one(“CityLife“,“Gray“),two(“Micky“,“Red“); cout #include using namespace std; class TV public: TV(int s=41):size(s) coutPrint(); delete room3; return 0; 运行时的输出结果是 ( A) NC54 ( B) NCN54D ( C) NNN54DDD ( D)
8、NCN54DDD 33 有如下类定义: class Point public: Point(int xx=0,int yy=0):x(xx),y(yy) private: int x,y; ; class Circle:public Point public: Circle(int r):radius(r) private: int radius; ; 派生类 Circle中数据成员的个数为 ( A) 1 ( B) 2 ( C) 3 ( D) 5 34 有如下程序: #include using namespace std; class Point public: Point(int xx=0
9、,int yy=0):x(xx),y(yy) void SetX(int xx) x=xx; void SetY(int yy) y=yy; private: int x,y; ; class Circle:public Point public: Circle(int r):radius(r) int GetRadius() return radius; private: void SetRadius(int r) radius=r; int radius; ; int main() Circle c1(5); c1.SetX(1); / c1.SetY(2); / c1.SetRadius
10、(10); / cout #include using namespace std; class Person public: Person(string n):name(n) Person() cout #include using namespace std; class Instrument public: Instrument(string t=“乐器 “,string n=“无名 “):type(t),name(n) string GetType() const return “乐器 “; virtual string GetName() const return “无名 “; pr
11、otected: string type,name; ; class Piano:public Instrument public: Piano(string n,string t=“钢琴 “):Instrument(t,n) string GetType() const return “钢琴 “; string GetName() const return name; ; int main() Instrument *pi=new Piano(“星空 “); coutGetType()GetName(); delete pi; return 0; 运行时的输出结果是 ( A)乐器 -星空 (
12、 B)乐器 -无名 ( C)钢琴 -星空 ( D)钢琴 -无名 37 下列关于函数模板的叙述中,错误的是 ( A)从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准 ( B)对于常规参数所对应的模板实参,任何情况下都不能省略 ( C)虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参 ( D)模板实参表不能为空 38 在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的 括号是 ( A) ( ) ( B) ( C) ( D) 39 下列关于 C+ 流的叙述中,正确的是 ( A)与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现 ( B)从流中获取数据的操
13、作称为插入操作,向流中添加数据的操作称为提取操作 ( C) cin 是一个预定义的输入流类 ( D)输出流有一个名为 open的成员函数,其作用是生成一个新的流对象 40 若磁盘上已存在某个文本文件,其全路径文件名为 d:ncretest.txt ,下列语句中不能打开该文件的是 ( A) ifstream file(“d:ncretest.txt“); ( B) ifstream file(“d:ncretest.txt“); ( C) ifstream file; file.open(“d:ncretest.txt“); ( D) ifstream* pFile = new ifstream
14、(“d:ncretest.txt“); 国家二级 C+机试(选择题)模拟试卷 41 答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 在实际应用中,队列的 顺序存储结构一般采用循环队列的形式。 2 【正确答案】 C 【试题解析】 一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。 3 【正确答案】 A 【试题解析】 根据二叉树的性质 3:在任意一棵二叉树中,度为 0的叶子结点总是比度为 2的结点多一个,所以本题中度为 2的结点是 5 1 4
15、个,所以度为 1的结点的个数是 25 5 4 16个。 4 【正确答 案】 B 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,所以选择B。 5 【正确答案】 A 【试题解析】 实体完整性约束要求关系的主键中属性值不能为空值,所以选择A。 6 【正确答案】 C 【试题解析】 如果 S T/R,则 S称为 T除以 R的商。在除运算中 S 的域由 T中那些不出现在 R中的域所组
16、成,对于 S 中的任一有序组,由它与关系 R中每个有序组所构成的有序组均出现在关系 T 中。所以本题选择 C。 7 【正确答案】 A 【试题解析】 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择 A。 8 【正确答案】 D 【试题解析】 需求分析阶段的工作有:需求获取;需求分析;编写需求规格说明书;需求评审,所以选择 D。 9 【正确答案】 B 【试题解析】 黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序
17、内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明,所以本题选择 B。 10 【正确答案】 C 【试题解析】 系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。 PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计 过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择 C。 11
18、【正确答案】 A 【试题解析】 C+作为面向对象的语言,具有三种特点封装性、继承性、多态性。所以答案为 A。 12 【正确答案】 C 【试题解析】 全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中 使用全局变量,一般应作全局变量说明,本题中定义了两个全局变量 i, j,所以主函数中对全局变量重新赋值输出后为 99,所以答案为 C。 13 【正确答案】 A 【试题解析】 本题考查赋值运算和 while循环, i被赋值为为 0,所以 while中的判断条件为假,不执行循环体,所以输出为 0个。 14 【正确答案】 A 【试
19、题解析】 本题考查二维字符数组, a0=“AAA“中 a0表示一个地址,不能将字符串直接赋值给指针,所以 A选项错误。 15 【正确答案】 C 【试题解析】 本题中 while循环中当 i为偶数时输出 *,而 i为 100时跳出循环,所以输出 49个 *,答案为 C。 16 【正确答案】 C 【试题解析】 本题考查函数返回类型,函数如果返回为 void,那么函数体内可以没有 return语句,如果函数有返回值,那么在函数体中就必须有 return语句。 17 【正确答案】 C 【试题解析】 本题考查运算符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;
20、重载运算符的函数不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运 算符不能重载。所以答案为 C。 18 【正确答案】 C 【试题解析】 在类体中定义的成员函数, C+系统会自动将它们作为内联函数处理,而在类外定义的成员函数,系统并不把它们默认为内联函数,内联函数可以用 return,以可以不用,所以只有选项 C正确。 19 【正确答案】 B 【试题解析】 本题考查重载运算符, C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选 B。 20 【正确答案】 A 【试题解析】 本题考查函数重载相关知识,重载函数 是函数的一种特殊情况
21、,为方便使用, C+允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。 A选项的形参都与原函数相同,所以不能作为重载函数。 21 【正确答案】 D 【试题解析】 本题考查重载自减运算符 -,根据重载的规则,只有 D选项能够正确调用重载函数。 22 【正确答案】 C 【试题解析】 本题考查递归函数调用,执行 a(4)= a(3) + a(1),而 a(3) = a(2) + a(0),总共执行函数为 a(4)、 a(3)、 a(2)、 a(0)、 a(1)五次,所以答案 C正确。 23 【正确答
22、案】 B 【试题解析】 本题考查常对象,如果一个对象被定义为常对象,那么它不能调用该对象的非 const型的成员函数,所以 B选项错误, a为常对象,调用了 SetData这个非 const型的成员函数。 24 【正确答案】 B 【试题解析】 本题考查默认构造函数,如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,建立一个对象时,系统会自动执行默认构造函数 。 25 【正确答案】 C 【试题解析】 本题考查默认构造函数,如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,所以 C选项正确。 26 【正确答案】 D 【试题解析
23、】 本题考查继承与派生,派生类中的成员访问基类中的成员由派生方式决定,如果派生类私有继承基类,那么就不能新定义的成员函数就不能访问基类的私有成员,所以 A选项错误。在私有继承的情况下,派生类中新定义的成员函数可以访问基类的保护成员。基类对象在某种情况下可以赋值给派生类对象。 27 【正确 答案】 A 【试题解析】 本题考查继承与派生,派生类中的成员访问基类中的成员由派生方式决定,本题主要考查公用继承方式对基类的访问权限,根据公用继承的特性, A选项正确。 28 【正确答案】 C 【试题解析】 本题考查派生类对基类成员的访问属性,派生类公用继承基类,所以派生类可以直接使用基类的公用成员,题目中输
24、出了 Base:fun,所以可以推断派生类一定是调用了基类的 fun函数,只有 C选项正确调用了基类的 fun 函数,所以 C选项正确。 29 【正确答案】 A 【试题解析】 本题考查如何 在类体外定义成员函数,在类体外定义成员函数需要使用作用域运算符:,只有 A选项符合定义格式,所以 A选项正确。 30 【正确答案】 B 【试题解析】 本题考查派生类的构造函数, C+初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序,所以 B选项正确。 31 【正确答案】 C 【试题解析】 本题考查构造函数和析构函数,以及静态数据成员,定义 one,two时,构造函数被执行了两次,
25、所以 count为 2,后续又定义了一个指针对象,所以 count加 1变为了 3,当删除那个指针 对象时,执行析构函数, count减 1,所以是 2,答案 C正确。 32 【正确答案】 D 【试题解析】 本题考查构造函数相关知识,本题中定义一个对象 room1,输出N,定义 room2时输出 C,定义 room3时输出 N,然后执行 room3.Print时,输出54,最后执行三个析构函数输出 DDD,所以答案为 D。 33 【正确答案】 C 【试题解析】 本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类的一般形式为: class 派生类名: 继承方式 基类名 题目中公用继承,
26、所以也继承基类 的数据成员,所以总共有 3个数据成员,所以 C选项正确。 34 【正确答案】 C 【试题解析】 本题考查对象成员的引用,在类外引用对象的数据成员时,只能访问 public成员而不能访问 private成员所以 C选项错误。 35 【正确答案】 D 【试题解析】 本题考查派生类的析构函数,派生类的析构函数执行顺序为先构造的后析构,后构造的先析构,所以执行 Student stu1(“Zhang“,1990,10,1,F);时,依次执行 person、 Date 、 Student构造函数,然后依次执行 Student、 Date 、person 的析构函数,所以输出为 SDP,
27、D选项正确。 36 【正确答案】 A 【试题解析】 本题考查虚函数的运用,本题中基类 Instrument,派生类 Piano,其中虚函数为 GetName,当定义 Instrument *pi=new Piano(“星空 “)时,调用派生类的 GetType函数,得到 type为乐器, name 为星空,所以输出乐器 -星空。选项A正确。 37 【正确答案】 D 【试题解析】 虚拟类型参数出现在模板函数的形参表中时,可以省略模板实参。所以 D选项错误。 38 【正确答案】 C 【试题解析】 本题考查模板的定义,使用的括号为 ,所以答案为 C选项。 39 【正确答案】 A 【试题解析】 本题考查输入输出流,从流中获取数据的操作称为提取操作,向流中添加数据的操作称为插入操作, cin 是一个标准输入流类, open 并不是输出流的一个成员函数。 40 【正确答案】 A 【试题解析】 本题考查文件流的一些操作,根据文件打开的相关知识, A选项中不能正确打开该文件。