1、国家二级( C+)机试模拟试卷 125及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)算法就是程序 ( B)设计算法时只需要考虑数据结构的设计 ( C)设计算法时只需要考虑结果的可靠性 ( D)以上三种说法都不对 2 下列叙述中正确的是 ( )。 ( A)有一个以上根结点的数据结构不一定是非线性结构 ( B)只有一个根结点的数据结构不一定是线性结构 ( C)循环链表是非线性结构 ( D)双向链表是非线性结构 3 下列关于二叉树的叙述中,正确的是 ( )。 ( A) 叶子结点总是比度为 2的结点少一个 ( B)叶子结点总是比度为 2的结点多一个 ( C)叶子结点数是度为 2的
2、结点数的两倍 ( D)度为 2的结点数是度为 l的结点数的两倍 4 软件生命周期中的活动不包括 ( )。 ( A)市场调研 ( B)需求分析 ( C)软件测试 ( D)软件维护 5 某系统总体结构图如下图所示: 该系统总体结构图的深度是 ( )。 ( A) 7 ( B) 6 ( C) 3 ( D) 2 6 程序调试的任务是 ( )。 ( A)设计测试用例 ( B)验证程序的正确性 ( C)发现程序中 的错误 ( D)诊断和改正程序中的错误 7 下列关于数据库设计的叙述中,正确的是 ( )。 ( A)在需求分析阶段建立数据字典 ( B)在概念设计阶段建立数据字典 ( C)在逻辑设计阶段建立数据字
3、典 ( D)在物理设计阶段建立数据字典 8 数据库系统的三级模式不包括 ( )。 ( A)概念模式 ( B)内模式 ( C)外模式 ( D)数据模式 9 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)交 ( C)投影 ( D)并 10 下列选 项中属于面向对象设计方法主要特征的是 ( )。 ( A)继承 ( B)自顶向下 ( C)模块化 ( D)逐步求精 11 下列字符串中不能作为 C+标识符使用的是 ( )。 ( A) INT ( B) test ( C) _1481 ( D) ltemp 12 下列语句中错误的是 ( )。 (
4、 A) const int*p=0; ( B) const int y=99; ( C) const int x; ( D) const int*p=new int(100); 13 有如下程序: #include using namespace std; int main() mt sum; for(int i=0; i using namespace std; class Sample public: Sample() Sample()cout #include using namespace std; class MyBag public: MyBag(string br, string
5、 cr): brand(br), color(cr)+count; MyBag()-count; static int GetCount()return count; private: string brand, color; static int count; ; _ int main() MyBag one(“CityLife“, “Gray“), two(“Micky“, “Red“); cout using namespace std; class TV public: Tv(int s=41): size(s) void Print()cout using namespace std
6、; class Point t public: Point(int xx=0, 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: Point public: Circle(int r): radius(r) int GetRadius()return radius; private: void SetRadius(int r)radius=r; int radius; i; int main() Circle cl(5); c1 Se
7、tX(1); c1 SetY(2); c1 SetRadius(10); cout #include using namespace std; class Person public: Person(string n): name(n)cout #include using namespaee std; class Instrument public: Instrument(string t=“乐器 “, string n=“无名 “): type(t), name(n) virtual string GetType()constreturn“乐器 “; virtual string GetN
8、ame()constreturn“无名 “; protected: string type, name; ; class Piano: public Instrument public: Piano(string n, string t=“钢琴 “): Instrument(t, n) string GetType()constreturn“钢琴 “; string GetName()constreturn name; ; int main() Instrument*pi=new Piano(“星空 “); coutGetType()GetName(); delete pi; return 0
9、; 运行时的输出结果是 ( )。 ( A)钢琴 -星空 ( B)钢琴 -无名 ( C)乐器 -星空 ( D)乐器 -无名 37 下列关于模板的叙述中,错误的是 ( )。 ( A)调用模板函数时,在一定条件下可以省略模板实参 ( B)可以用 int、 double这样的类型修饰符来声明模板参数 ( C)模板声明中的关键字 class都可以用关键字 typename替代 ( D)模板的形参表中可以有多个参数 38 下列模板声明中,有语法错误的是 ( )。 ( A) templateT fun(T X)return x; ( B) templateT fun(T x, int n)return x*
10、n; ( C) templateT fun(T*p)return*p; ( D) templateT class AT n; ; 39 要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是( )。 ( A) fstream ( B) istream ( C) ostream ( D) iomanip 40 若目前 D盘根目录下并不存在 test txt文件,则下列打开文件方式不会自动创建 test txt文件的是 ( )。 ( A) ifstream fin; fin open(“d: test txt“, ios_base: in); ( B) fstream rio; fi
11、o open(“d: test txt“, ios_base: out); ( C) ofstream fout; fout open(“d: test txt“, ios_base: out); ( D) ofstream fout; fout open(“d: test txt“, ios_base: app); 国家二级( C+)机试模拟试卷 125答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 算法是指解题方案的准确而完整的描述,算法不等于程序,也不 等于计算方法,所以 A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。 2 【正确答案】 B 【试
12、题解析】 线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,所以 B正确。所以有一个以上根结点的数据结构一定是非线性结构,所以 A错误。循环链表和双向链表都是线性结构的数据结构。 3 【正确答案】 B 【试题解析】 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0的叶子结点总是比度为 2的结点多一个。所以选择 B。 4 【正确答案】 A 【试题解析】 软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段、需求分析、软件设计、软件实现、软件测试、运行和维护,所以选择 A。 5 【正确答案】 C 【试题解析】 根据总体
13、结构图可以看出该树的深度为 3,比如: XY系统一功能2一功能 2 1,就是最深的度数的一个表现。 6 【正确答案】 D 【试题解析】 程序调试的任务是诊断和改正程序中的错误。 7 【正确答案】 A 【试题解析】 数据字典是在需求分析阶段建立,在数据库设计过程中 不断修改、充实和完善的。 8 【正确答案】 D 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。 9 【正确答案】 A 【试题解析】 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据 T中元组可以判断 R和 S做的是自然连接操作。 10
14、【正确答案】 A 【试题解析】 面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择 A。 11 【正确答案】 D 【试题解 析】 用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字和下划线 3种字符组成,且第一个字符必须为字母或者下划线。所以 D选项错误。 12 【正确答案】 C 【试题解析】 const是一个 C+语言的关键字,它限定一个变量不允许被改变,const常量、常量指针赋值时,均必须同时初始化。所以 C选项错误。 13 【正确答案】 D 【试题解析】 考查 for循环语句,本题中两层 for循环,每次 i循环, sum
15、都被重新赋值,所以当 i=2时,执行完 i循环后 sum为 37。所以答案为 D。 14 【正确答案】 B 【试题解析】 本题考查字符串的定义, A选项中,定义了一个字符,而用字符串赋值,所以错误, C选项定义了字符数组,一个字符所占空间是 1位,再加上隐含的 “ 0”,一共是 6位,所以字符数组的大小应该为 6, D选项定义了一个字符串指针数组,是指一个数组里面装着指针,赋值错误。所以答案为 B。 15 【正确答案】 C 【试题解析】 全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用
16、域仅限于函数内部。在函数中使用全局变量,一般应作全局变量说明,本题中定义了两个全局变量 i, j,但 main函数中又对i、 j进行了定义,所以输出为 88,所以答案为 C。 16 【正确答案】 D 【试题解析】 本题考查函数参数的相关知识,函数原型中必须声明形参类型,所以 A选项错误,调用一个函数时如果修改了形参值,那么实参可能改变也可能不改变,所以 B选项错误,函数形参的生存期一般在函数执行整个函数中存在,除了静态变量,所以 C选项错误。 17 【正确答案】 A 【试题解 析】 重载赋值运算符必须定义为类的成员函数,所以选项 A正确。重载赋值运算符时应返回一个类的对象,所以 C选项错误。如
17、果已经定义了复制 (拷贝 )构造函数,仍然可以重载赋值运算符,所以 D选项错误。 18 【正确答案】 D 【试题解析】 函数原型中,函数名、函数返回值、函数参数列表是需要的,而函数体在函数声明时不需要。所以答案为 D。 19 【正确答案】 B 【试题解析】 本题考查重载运算符, C+规定有的运算符 (如赋值运算符、下标运算符、函数调用运算符 )必须定义为类的成员函数。所以本题选 B。 20 【正确答案】 C 【试题解析】 本题考查函数重载相关知识,重载函数是函数的一种特殊情况,为方便使用, C+允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数 (指参数的个数、类型或者顺序
18、 )必须不同,也就是说用同一个运算符完成不同的运算功能。 A、 B、 D选项的部分形参都与原函数相同,所以不能作为重载函数,选项 C正确。 21 【正确答案】 D 【试题解析】 选项 D的形式是重载为友元函数,而友元函数不属于类的成员函数。所以重载为友元函数需要两个参数,通过参数传递的方式得到参加 运算的两个对象。其他的是重载为类的成员函数,由于对象本身代表了一个操作数,所以其参数只需要一个,其为参加运算的另一个操作数。 22 【正确答案】 A 【试题解析】 本题考查函数的调用,函数原型中第一个参数为引用,第二个参数为指针,所以只有 A选项正确。 23 【正确答案】 C 【试题解析】 本题考查
19、默认构造函数的生成,如果用户定义的类中没有声明、定义任何构造函数,编译器就会自动为该类生成默认构造函数,称为合成的构造函数。 C选项正确。 24 【正确答案】 B 【试题解析】 本题考查 构造函数和析构函数,题中定义了对象数组,那么析构时就析构两次,输出两个 *。答案为 B。 25 【正确答案】 B 【试题解析】 友元函数不是类的成员函数,但是可以具有类的成员的一些访问权限, A选项错误;类的成员访问权限默认是私有的, B选项正确;类的成员函数可以声明为私有的, C选项错误;类的静态数据成员可以是常成员, D选项错误。 26 【正确答案】 A 【试题解析】 本题考查虚函数,在某基类中声明为 v
20、irtual并在一个或多个派生类中被重新定义的成员函数称为虚函数,虚函数必须是基类的非静态成员 函数,非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数,不能定义为虚函数,但可以将析构甬数定义为虚函数。所以, A选项正确。 27 【正确答案】 D 【试题解析】 本题考查继承与派生,派生类中的成员访问基类中的成员是由派生方式决定的, A选项错误;一个类可以有多个直接基类, B选项错误;如果基类中定义了缺省构造函数或根本没有定义任何一个构造函数 (此时,由编译器自动生成缺省构造函数 )时,在派生类构造函数的定义中可以省略对基类构造函数的调用,即省略 “()”, C选项错误 。派生
21、类除了继承基类的成员,还可以定义新的成员,因此本题选 D。 28 【正确答案】 A 【试题解析】 本题考查派生类对基类成员的访问属性,基类成员在派生类中的访问属性如下表所示,因此本题选 A。29 【正确答案】 D 【试题解析】 本题考查如何初始化对象,其中类的数据成员是不能在声明类时初始化的,所以 D选项错误,在定义类的同时对数据成员 price进行赋值是错误的。 30 【正确答案】 B 【试题解析】 本题考查构造函数和析构函数,题中定义了一个对象以及对象数组,那么构造函数需要执 行 4次,而 *net2并不执行构造函数,所以答案为 B。 31 【正确答案】 C 【试题解析】 本题考查构造函数
22、和析构函数,以及静态数据成员,题目中要求输出 2,那么定义两个对象时,就执行构造函数,使得静态数据成员 +count,得到2,那么 count初始化就应该为 0,静态数据成员初始化时,只能在类体外进行初始化,一般形式为: 数据类型类型:静态数据成员名 =初值 因此本题选 C。 32 【正确答案】 A 【试题解析】 本题考查构造函数相关知识,本题中定义一个对象 room1, 执行room1 Print时执行构造函数给 size赋值为 41,然后执行 void Print()coutNsize; 输出 N41。而定义 const TV room2(54)时,给 size赋值为 54,最后输出结果为
23、 C54,所以答案为 A。 33 【正确答案】 C 【试题解析】 本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类的一般形式为: class派生类名: 继承方式 基类名题目中只有公有继承才能使用基类中 name成员,所以 C选项正确。 34 【正确答案】 D 【试题解析】 本题考查对象成员的引用,在类外引用对象的数据成员时,只能访问 public成员而不能访问 priVate成员所以 C选项错误, D选项正确,派生类公有继承基类,但是不能继承基类的私有成员,所以执行 cl Setx(1)错误,同理 B选项错误。 35 【正确答案】 D 【试题解析】 本题考查派生类的构造函数,派生类
24、的构造函数初始化时按照参数列表初始化顺序,所以先初始化 Per-一 son(n),输出 P,然后依次输出 D和 S,答案为 D选项。 36 【正确答案】 A 【试题解析】 本题考查 虚函数的运用,本题中基类 Instrument,派生类 Piano,其中虚函数为 GetType,当定义 Instrument*pi=new Piano(”星空 ”)时,调用派生类的 GetType函数,得到 type为钢琴, name为星空,所以输出钢琴一星空。选项 A正确。 37 【正确答案】 C 【试题解析】 本题考查类模板是类的抽象,类是类模板的实例。函数模板允许使用多个类型参数,但在 template定义
25、部分的每个形参前必须有关键字 typename或class;模板的类型参数由关键字 class或关键字 typename及其后的标识符构成,(在标准 C+之前关键字 typename没有被支持,把这个关键字加人到 C+中的原因是因为有时必须要靠它来指导编译器解释模板定义。 )本题 C选项错误。 38 【正确答案】 B 【试题解析】 本题考查模板的定义, B选项中 x为 T类型的, n为 int型的,但是 x*n就不一定是 T类型的,所以错误答案为 B。 39 【正确答案】 D 【试题解析】 本题考查格式控制相关知识,属于基础知识,需要包含 iomanip,所以 D选项正确。 40 【正确答案】 A 【试题解析】 本题考查文件流的一些操作, ios: in是以输入方式打开文件,如果并不存在这个文件,也不会自动创建一个新文件,所以 A选项正确。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1