1、国家二级 C+机试(选择题)模拟试卷 58及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)所谓算法就是计算方法 ( B)程序可以作为算法的一种描述方法 ( C)算法设计只需考虑得到计算结果 ( D)算法设计可以忽略算法的运算时间 2 下列各序列中不是堆的是 ( A) (91,85,53,36,47,30,24,12) ( B) (91,85,53,47,36,30,24,12) ( C) (47,91,53,85,30,12,24,36) ( D) (91,85,53,47,30,12,24,36) 3 深度为 5的完全二叉树的结点数不可能是 ( A) 15 ( B) 16 ( C)
2、 17 ( D) 18 4 设二叉树如下: 则前序序列为 ( A) ABDEGCFH ( B) DBGEAFHC ( C) DGEBHFCA ( D) ABCDEFGH 5 下面描述不属于软件特点的是 ( A)软件是一种逻辑实体,具有抽象性 ( B)软件在使用中不存在磨损、老化问题 ( C)软件复杂性高 ( D)软件使用不涉及知识产权 6 下面对类 -对象主要特征描述正确的是 ( A)对象唯一性 ( B)对象无关性 ( C)类 的单一性 ( D)类的依赖性 7 在数据库中,数据模型包括数据结构、数据操作和 ( A)数据约束 ( B)数据类型 ( C)关系运算 ( D)查询 8 一个运动队有多个
3、队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是 ( A)一对多 ( B)一对一 ( C)多对一 ( D)多对多 9 设循环队列为 Q(1: m),其初始状态为 front=rear=m。经过一系列入队与退队运算后, front=30, rear=10。现要在该循环队列中作顺序查找,最坏情况下需要比较的次 数为 ( A) 19 ( B) 20 ( C) m-19 ( D) m-20 10 有两个关系 R、 T如下: 则由关系 R得到关系 T的操作是 ( A)投影 ( B)交 ( C)选择 ( D)并 11 下列字符串中不能作为 C+标识符使用的是 ( A) D
4、OUBLE ( B) abc ( C) _5_ ( D) xyz 12 下列语句中错误的是 ( A) const int *p = 0; ( B) const int y = 0; ( C) int x = 0; ( D) const int p = new int(100); 13 有如下程序: #include using namespace std; int main() int sum = 0; for(int i = 0; i 0; i-=3) n+; n的值是 ( A) 23 ( B) 24 ( C) 25 ( D) 71 20 下列关于函数的叙述中,正确的是 ( A) C+不允许
5、函数嵌套定义 ( B) C+中所有函数都有返回值 ( C)函数的形参列表一定不能为空 ( D)调用函数时一定会执行完函数体的最后一条语句 21 下列关于运算符重载的叙述中,正确的是 ( A)不能改变重载 运算符的优先级 ( B)运算符只能重载为类的成员函数 ( C) C+中已有的任何运算符都可以重载 ( D)可以为重载运算符函数的参数设置默认值 22 下列运算符中,可以重载为类的友元函数的运算符是 ( A) = ( B) () ( C) . ( D) 1) return (2*n-1)*x-P(x,n-1)-(n-1)*P(x,n-2)/n; 若执行 函数调用表达式 P(1.3,2),函数 P
6、被调用的次数是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 26 有如下类定义: class MyClass public: MyClass(double d=0.0):val(d) _ /类型转换运算符 double的定义 private: double val; ; 若 要使语句序列 MyClass x(2.1); cout using namespace std; class Shape /图形类 public: /图形绘制函数(用显示字母模拟) virtual void draw()const coutdraw(); t.draw(); plot(t); delete ps
7、; return 0; 运行这个程序的输出是 ( A) SCC ( B) SCS ( C) CSS ( D) CCC 34 有如下类及函数的定义: class Wow int k; public: Wow(int n=0):k(n) int incre() return +k; int decre(); void show()const; ; int Wow:decre() return -k; inline void display( Wow w) w.show(); void Wow:show()const cout using namespace std; class CC int k;
8、 public: CC(int n):k(n) int get()const return k; ; int main() CC c3=CC(1),CC(2); return 0; 此程序编译时未能通过,原因是 ( A)数组只能定义为基本数据类型 ( B)类 CC 缺少复制构造函数 ( C)对象数组只能作为类的数据成员 ( D)类 CC 缺少默认的构造函数 37 有如下类声明和函数声明 class Base int m; public: int n; protected: int p; ; class Derived: public Base public: int k; ; void f(D
9、erived d); 则在函数 f 中通过 d 可访问的数据成员包括 ( A) n ( B) n 和 k ( C) n、 k 和 p ( D) n、 k、 p 和 m 38 下列关于模板的表述中,错误的是 ( A)模板形参表的两边使用尖括号括起来 ( B)模板以关键字 template开始 ( C)模板声明中的关键字 class 都可以用关键字 typename 替代 ( D)模板的形参表中可以有多个参数 39 要利用 C+ 流实现输入输出 的各种格式控制,必须在程序中包含的头文件是 ( A) fstream ( B) istream ( C) cstdlib ( D) iomanip 40
10、在下列标识符中,不属于文件流类的标识符是 ( A) ifstream ( B) ofstream ( C) fstream ( D) operator 国家二级 C+机试(选择题)模拟试卷 58答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序 ,A选项错误。算法设计需要 考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果, C选项错误。算法设计有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的, D选项错误。算法在实现时需要用具体的程
11、序设计语言描述,所以程序可以作为算法的一种描述方法, B选项正确。 2 【正确答案】 C 【试题解析】 若 有个元素的序列,将元素按顺序组成一棵完全二叉树,当且仅当满足下列条件时称为堆:大根堆,所有结点的值大于或等于左右子结点的值;小根堆,所有结点的值小于或等于左右子结点的值。 A、 B、 D选项属于大根堆,C选项由于 4785,不满足条件,不是堆,故正确答案为 C选项。 3 【正确答案】 A 【试题解析】 在树结构中,定义一棵树的根结点所在的层次为,其他结点所在的层次等于它的父结点所在的层次加,树的最大层次称为树的深度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在 最后一层上只
12、缺少右边的若干结点。深度为 5的二叉树,结点个数最多为 25-1=31,最少为 24=16,不可能是 15,故正确答案为 A选项。 4 【正确答案】 A 【试题解析】 二叉树遍历可以分为 3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序遍历为 ABDEGCFH,中序遍历为 DBGEAFHC,后序遍历为 DGEBHFCA,故 A选项正确。 5 【正确答案】 D 【试题解析 】 软件具有以下特点:软件是一种逻辑实体,具有抽象性;软件没有明显的制作过程;软件在使用期间不存在
13、磨损、老化问题;对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素,如知识产权等。故选项 D正确。 6 【正确答案】 A 【试题解析】 对象的基本特点是:标识唯一性、分类性、多态性、封装性、模块独立性好。类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反映属于该对象类型的所有对象的性质。对象具有的性质,类也具有。故 A选项正确。 7 【正确答案】 A 【试题 解析】 数据模型通常由数据结构、数据操作及数据约束部分组成。故 A选项正确。 8 【正确答案】 A 【试题解析】 一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系( 1:1)、一对
14、多联系( 1:m)、多对多联系( m:n)。实体运动队和队员的关系为 1:m联系,故 A选项正确。 9 【正确答案】 D 【试题解析】 循环队列是队列的一种顺序存储结构,用队尾指针 rear指向队列中的队尾元素,用排头指针 front指向排头元素的前一个位置,因此,从排头指针front指向的后一个位置直到 队尾指针 rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为 front=rear=m,当 front=30, rear=10时,队列中有 m-30+10+1=m-19个元素,比较次数为 m-20次, D选项正确。 10 【正确答案】 A 【试题解析】 用于查询的 3个操作无法
15、用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。投影,从关系模式中指定若干个属性组成新的关系,题目中从 R中指定 AB组成新的关系 T,故 A选项正确。选择,从关系中找出满足给 定条件的元组的操作称为选择,即结果 T应该包含 R中全部属性,故 C选项错误。假设, R与 S经过某种关系得到 T,则并: R S是将 S中的记录追加到 R后面;交: RS结果是既属于 R又属于 S的记录组成的集合。上述两种操作中,关系 R与 S以及 T要求有相同的结构,故 B、 D选项错误。 11 【正确答案】 B 【试题解析】 C+的标识符由字母、数字和下划
16、线组成,其中必须以字母或下划线开头。选项 B错误,答案选 B。 12 【正确答案】 D 【试题解析】 C+中使用 new表达式动态创建对象, new表达式返回指向新 创建对象的指针, D选项将 new返回的指针赋给整型 const变量,语法错误,答案选D。 13 【正确答案】 D 【试题解析】 程序在 for循环中嵌套 while循环。 for循环的初始条件为, sum、 i初值为 0;进入 for循环之后,首先将 sum累加 i,此时 sum、 i仍为 0; while循环中,若 sum小于 100,则将 sum累加 i,继续 while循环;当 sum不满足条件时,退出循环。由于 sum、
17、 i初值为 0,所以 while循环中 sum始终为 0,始终满足循环条件 sum0不成立;由 70/3=23,可知循环最少执行 23次,之后 i取值为 1,仍然满足循环条件,所以循环总共执行 24次, n自增 24次,答案为 B。 20 【正确答案】 A 【试题解析】 C+中函数可以不返回任何值,不返回任何值指定返回 类型为 void类型;函数形参表可以为空,但不能省略;函数调用过程中,可能会由于 return语句或者异常终止执行,不一定会执行完最后一条语句; B、 C、 D错误;函数不允许嵌套定义,答案为 A。 21 【正确答案】 A 【试题解析】 操作符 “不能重载为成员函数,选项 B错
18、误;成员访问操作符 “.“、成员指针访问操作符 “.*“、域操作符 “:“、 sizeof和条件操作符 “?:“是不能重载的,选项 C错误;除了函数调用操作符 “()“外,重载操作符时使用默认参数是非法的,选项 D错误;重载操作符不能改变 操作符的优先级别,选项 A正确;答案为 A。 22 【正确答案】 D 【试题解析】 C+规定,赋值操作符 “=“、下标操作符 “、调用操作符 “()“和成员访问箭头操作符 “-“必须重载为成员函数,这些操作符定义为非成员函数将在编译时标记为错误,友元函数是非成员函数,上面四种操作符不能重载为类的友元函数,另外成员访问操作符 “.“不能重载,答案为 D。 23
19、 【正确答案】 A 【试题解析】 函数 fun的实参分别是: x*y的结果、 3、 max函数的返回值,实参个数为 3。答案为 A。 24 【正确 答案】 D 【试题解析】 内联函数的函数定义必须出现在内联函数第一次被调用之前;内联函数可以避免函数频繁调用时的开销,提高程序运行效率;在类定义体内部定义的成员函数,编译器都将其视为内联函数; A、 B、 C正确;内联函数也可以有参数, D错误,答案为 D。 25 【正确答案】 D 【试题解析】 内联函数的函数定义必须出现在内联函数第一次被调用之前;内联函数可以避免函数频繁调用时的开销,提高程序运行效率;在类定义体内部定义的成员函数,编译器都将其视
20、为内联函数; A、 B、 C正确;内联函数也可以有参数, D错 误,答案为 D。 26 【正确答案】 A 【试题解析】 题目需要定义类型转换运算符 double,类型转换运算符是一种特殊的类成员函数,它定义将类类型的值转变为其他类型值,由于转换函数必须是成员函数,选项 B、 D错误;另外转换函数不能指定返回类型,并且形参列表必须为空,选项 C错误;所以 double类型转换运算符的定义为: operator double() const return val; ;答案为 A。 27 【正确答案】 A 【试题解析】 常对象是指对象的数据成员的值在对象被调用时不能 被改变,常对象必须进行初始化,且
21、不能被更新,不能通过常对象调用普通成员函数,常对象只能调用常成员函数,选项 B、 D错误;常对象是可以包含普通成员的,选项 C错误;答案为 A。 28 【正确答案】 B 【试题解析】 C+中,关键字 public、 protected、 private用来声明类的访问权限,另外 friend关键字可以用来声明友元,同样可以控制类的访问权限; const用来修饰常量性,与类的访问权限无关,答案为 B。 29 【正确答案】 B 【试题解析】 定义一个 ClassA类型的对象 c1, 生成新对象 c1,调用默认构造函数;定义一个 ClassA类型的指针 c2,指针未赋初值,没有新对象生成,没有调用构
22、造函数;定义一个 ClassA类型的指针 c3,使用动态分配方式为 c3分配内存,生成新的对象,将 c3初始化为新对象的地址,调用默认构造函数;定义一个ClassA类型的引用 c4,引用 c1对象,没有新对象生成,未调用构造函数;答案为B。 30 【正确答案】 A 【试题解析】 在函数形参表后面添加 “=0“可以指定该函数为纯虚函数,类中含有一个或多个纯虚函数,该类就是抽象类,选项 B错误;可以通过对象指 针或引用调用虚函数,也可以使用对象直接调用虚函数,只不过使用对象直接调用虚函数和调用普通成员函数一样,没有动态绑定,不具有多态性,选项 C错误;抽象类中的成员函数至少有一个纯虚函数,对虚函数
23、没有要求,选项 D错误;一个函数定义为虚函数,它就是动态绑定的,在派生类中可以覆盖,而静态成员函数是属于整个类,不属于某个类对象,对于每个类来说只有一份代码,所有同类的对象共享这份代码,没有动态绑定的必要,选项 A正确;答案为 A。 31 【正确答案】 A 【试题解析】 dA公有继承 Parents, dB私有继承 Parents,所以 Parents中的公有成员 publicData在 dA中是公有成员,对 x可见,在 dB中是私有成员,对 y不可见, Parents中的私有成员 privateData对 x和 y都不可见;由此可知:只有 x可以访问 publicData,答案为 A。 32
24、 【正确答案】 A 【试题解析】 C+的类定义中,只有非静态成员函数具有 this指针, Pass类中getCount()函数是友元函数,不属于成员函数,没有 this指针,选项 B、 D错误;incre()函数是静态成员函数,没有 this指针,选项 C错误;答案 为 A。 33 【正确答案】 D 【试题解析】 C+中,多态性调用需要满足两个条件, 1、被调用成员函数必须是虚函数; 2、必须通过基类类型的引用或指针进行函数调用。多态性使程序在运行时期根据指针或引用所指对象的类型来决定调用哪个函数。 程序中,类 Shape定义了虚函数 draw(),在派生类 Circle中重写了函数draw(
25、); main函数中,分别使用指针、对象、引用三种方式调用函数 draw(),指针 ps是基类指针,指向的是派生类的对象,所以这里根据多态性,将调用 Circle中的 draw函数,输 出 “C“;对象 t是 Circle对象,也调用 Circle中的 draw函数,输出 “C“;函数 plot()执行时引用 s引用的是实参 t,引用对象是派生类 Circle对象,根据多态性,同样调用 Circle中的 draw函数,输出 “C“;结果输出为“CCC“;答案为 D。 34 【正确答案】 C 【试题解析】 类定义体内部定义的函数,编译器都默认为内联函数,类定义体外部定义的函数,使用关键字 inl
26、ine修饰的函数为内联函数,所以内联函数有:Wow(int n=0)、 incre()、 display(Wow w),答 案为 C。 35 【正确答案】 B 【试题解析】 类 How的定义体中没有定义任何构造函数,所以编译器需要自动生成一个默认构造函数和复制构造函数,答案为 B。 36 【正确答案】 D 【试题解析】 对象数组无论在哪里定义,都需要自动调用该对象元素的类的默认构造函数进行初始化,如果该类没有默认构造函数,必须为数组的元素提供显式初始化;程序中定义了对象数组 c,它包含了三个元素,前两个元素使用构造函数CC(int n)显式初始化,最后一个元素需要使用默认构造函数初始化,由于类
27、 CC中已经定义了构造函数 ,所以编译器不会自动生成默认的构造函数,缺少默认构造函数导致对象数组 c的第三个元素无法完成初始化,编译错误;答案为 D。 37 【正确答案】 B 【试题解析】 公有继承中,基类成员保持自己的访问级别( private成员除外),基类的 public成员在派生类中是 public成员,基类的 protected成员在派生类中是 protected成员;所以程序中 Derived类的 public成员有: n、 k, protected成员有: p, m对 Derived不可见,所以 Derived对象 d可访问的成员有: n、 k,protected成员不可见;答案
28、为 B。 38 【正确答案】 C 【试题解析】 模板定义以关键字 template开始,后接模板形参表,模板形参表是用尖括号括住的一个或多个模板形参的列表,形参之间用逗号分隔,选项 A、B、 D正确;至于选项 C,一般关键字 class和 typename在模板形参表中,是没有区别的,但是关于类模板,类定义的关键字也是 class,这里 class是不可用typename替代的,答案为 C。 39 【正确答案】 D 【试题解析】 C+中 I/O流控制头文件是 iomanip,它 负责实现输入输出的各种格式控制;答案为 D。 40 【正确答案】 D 【试题解析】 文件流类的标识符由:输入文件流类 ifstream、输出文件流类ofstream和输入输出文件流类 fstream; operator是重载运算符的标识符,答案为D。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1