[计算机类试卷]国家二级(C++)机试模拟试卷76及答案与解析.doc

上传人:diecharacter305 文档编号:502528 上传时间:2018-11-29 格式:DOC 页数:32 大小:99KB
下载 相关 举报
[计算机类试卷]国家二级(C++)机试模拟试卷76及答案与解析.doc_第1页
第1页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷76及答案与解析.doc_第2页
第2页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷76及答案与解析.doc_第3页
第3页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷76及答案与解析.doc_第4页
第4页 / 共32页
[计算机类试卷]国家二级(C++)机试模拟试卷76及答案与解析.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、国家二级( C+)机试模拟试卷 76及答案与解析 一、选择题 1 在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) O(nlog2n) 2 下列有关运算符重载的叙述中,正确的是 ( )。 ( A)运算符重载是多态性的一种表现 ( B) C+中可以通过运算符重载创造新的运算符 ( C) C+中所有运算符都可以作为非成员函数重载 ( D)重载运算符时可以改变其结合性 3 有如下程序: #include using namespace std; class MyClass public: MyC

2、lass(int x):val(x) void Print() const cout ( C) 1; i-) rqs+=arri一 1*k; *found* _; *found* if(_) returnn; else return0; intmain() intcount=0; cout #include usingnamespacestd; classTaxCalculator public: TaxCalculatorfdoublethe_limits , doubletherates, intthe_ length, doublethethreshold) : lower1imits(

3、newdoublethe_ length), rates(newdoublethe_ lengthj), list_len(the_length), threshold(thethreshold) for(inti=0; i=0) *333* *666* -i; returntax_payable; voidTaxCalculator: showTaxPayable (doubleincome)const cout“月收入为 “setw(6)income”元时应缴纳个人所得税 ” setw(4)getTaxPayable(income)“元 “end1; main cpp #include“T

4、axCalculator h“ intmain() doublelimits=0 0, 500 0, 2000 0, 5000 0, 20000 0, 40000 0, 60000 0, 80000 0, 100000 0; doublerates=0 05, 0 1, 0 15, 0 2, 0 25, 0 3t0 35, 0 4f0 45; TaxCalculatorcalc(1imits, rates, 9, 2000 0); calc showTaxPayable(800 0); calc showTaxPayable(1800 0); calc showTaxPayable(2800

5、0); calc showTaxPayable(3800 0); calc showTaxPayable(4800 0); calc showTaxPayable(5800 0); writeToFile(“); return0; 国家二级( C+)机试模拟试卷 76答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为 n 的有序线性表,在最坏情况下,二分法查找只需要比较次,而顺序查找需要比较 n次。 2 【正确答案】 A 【试题解析】 重载运算符的规则如下: C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行

6、重载; C+不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变运算符的优先级和结 合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为 A。 3 【正确答案】 C 【试题解析】 本题考查常对象、常成员函数及构造函数。常对象只能调用常成员函数,普通对象调用普通成员函数。所以本题中 obj1为常对象,执行 obj1.print()后,会执行常构造函数,输出 const: val=10;而 obj2为普通对象,执行obj2.print()时,会执行默认构造函

7、数,输出 val=20。故 答案为 C。 4 【正确答案】 C 【试题解析】 根据总体结构图可以看出该树的深度为 3,比如: XY系统功能 2功能 2.1,就是最深的度数的一个表现。 5 【正确答案】 B 【试题解析】 本题考查重载运算符, C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选 B。 6 【正确答案】 C 【试题解析】 执行派生类构造函数的顺序是: 1、调用基类构造函数, 2、调用子对象构造函数, 3、再执行派生类构造函数,所以本题中先调用基类 person 构造函数,然后执行 father构造函数,最后执行 mother构造函数。

8、7 【正确答案】 C 【试题解析】 根据软件设计原理提出如下优化准则: 划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。 一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。 软件结构的深度、宽度、扇入、扇出应适当。 模块的大小要适中。 C正确。 8 【正确答案】 A 【试题解析】 参数传递有三种: 传值 (value),传址 (address),和传引用 (reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值,函数 f2就属于传值调用,所以不会改变 y 的值。

9、传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量 传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。 f1函数属于传引用调用,所以 y 的值在执行完函数后变为了 36, C选项正确。 9 【正确答案】 C 【试题解析】 执行派生类构造函数的顺序是: 1、 调用基类构造函数, 2、调用子对象构造函数, 3、再执行派生类析构函数, 4、执行基类的析构函数。所以本题中执行析构函数为派生类的析构函数、 Father 的析构函数、 Mother 的析构函数,所以输出 CFM,答案 C正确。 10 【正确答案】 A 【

10、试题解析】 用于查询的 3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。投影,从关系模式中指定若干个属性组成新的关系,题目中从 R中指定 AB 组成新的关系 T,故 A选项正确。选择,从关系中找出满足给定条 件的元组的操作称为选择,即结果 T应该包含 R中全部属性,故 C选项错误。假设, R与 S 经过某种关系得到 T,则并: R S 是将 S中的记录追加到 R后面;交: RS结果是既属于 R又属于 S 的记录组成的集合。上述两种操作中,关系 R与 S 以及 T要求有相同的结构,故 B、 D选项错误。 11 【正确答案】 D

11、 【试题解析】 C+中,静态成员是类的组成部分,不是任何对象的组成部分,因此静态成员函数没有 this 指针,类的非 const成员函数包括静态成员函数,所以选项 A、 C错误;答案选 B 或 D。 12 【正确答案】 A 【试题解析】 getline(istream&is,string&str)第一个参数 is是输入流对象,这个对象可以是键盘输入流对象,也可以是文件输入流等其他输入流的对象,选项 A错误,答案为 A。 13 【正确答案】 D 【试题解析】 选项 A中, “+“运算符作为一元运算符,应该放在操作数之前,返回操作数本身;作为二元运算符,必须作用于两个操作数;选项 B 中, “+“

12、运算符是一元运算符,只能作用于一个操作数;选项 C中, 3是常量,不能用作赋值操作符的左值;选项 D正确, “-“操作符作为一元运算符,放在操作数之 前,对其操作数取负;答案为 D。 14 【正确答案】 B 【试题解析】 C+中,只有当一个类没有定义构造函数时,编译器才会自动生成一个默认构造函数,一个类哪怕只定义了一个构造函数,编译器也不会再生成默认构造函数,选项 B 错误,答案为 B。 15 【正确答案】 B 【试题解析】 算法是指对解题方案的准确而完整的描述,算法不等于数学上的计算方法,也不等于程序 ,A选项错误。算法设计需要考虑可行性、确定性、有穷性与足够的情报,不能只考虑计算结果, C

13、选项错误。算法设计有穷性是指操作步骤有限且能在有限时 间内完成,如果一个算法执行耗费的时间太长,即使最终得出了正确结果,也是没有意义的, D选项错误。算法在实现时需要用具体的程序设计语言描述,所以程序可以作为算法的一种描述方法, B选项正确。 16 【正确答案】 A 【试题解析】 选项 B中, y=1语句后面少了分号 “; “;选项 C中, then不是关键字,不符合 if语法;选项 D中,条件部分 x!=0必须用圆括号括起来;只有选项A正确,整型变量 x在条件中转化为逻辑变量,非 0情况下都转化为 1;答案为A。 17 【正确答案】 C 【试题解析】 定义类模板时, 模板形参表同样使用尖括号

14、括起来,答案为 C。 18 【正确答案】 D 【试题解析】 C+的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。 A、 B、 C错误,答案为 D。 19 【正确答案】 B 【试题解析】 基类中的 private成员,只有基类和基类的友元可以访问,派生类的成员函数不能直接访问,所以派生类若要访问基类的 private成员,必须使用基类的接口,答案为 B。 20 【正确答案】 C 【试题解析】 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0的叶子节点总是 比度为 2的节点多一个,所以本题中是 5 1 6个。 21 【正确答案】 C 【试题解析】 所谓函数重载是指同一个函数名可

15、以对应多个函数的实现。每种实现对应一个函数体,这些函数的名字相同,其参数类型或个数不同,但不能出现函数返回值类型不同而参数类型和个数完全相同的重载。所以本题答案为 C。 22 【正确答案】 C 【试题解析】 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数 。本题中定义了一个对象 d1,先执行基类的构造函数输出 0,再执行派生类的构造函数输出 3,然后定义了一个对象d2(5,7),其中需要调用基类的构造函数输出 7,最后输出 5,所以答案为 C。 23 【正确答案】 A 【试

16、题解析】 本题考查赋值运算和 while循环, i被赋值为为 0,所以 while中的判断条件为假,不执行循环体,所以输出为 0个。 24 【正确答案】 A 【试题解析】 本题考查派生类的构造函数,其一般形式为:派生类构造函数名(总参数表列) :基类构造函数名(参数表列)所以只有选项正确。 25 【正确答案】 C 【试题解析】 栈的修改是按后进先出的原则进行的,所以顺序应与入栈顺序相反,故选 C。 26 【正确答案】 C 【试题解析】 参数传递有三种: 传值 (value),传址 (address),和传引用 (reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子

17、函数无法改变父函数变量的值,函数 f2就属于传值调用,所以不会改变 y 的值。 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量 传引用则是一种看起来像传值 调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。 f1函数属于传引用调用,所以 y 的值在执行完函数后变为了 36, C选项正确。 27 【正确答案】 C 【试题解析】 执行派生类构造函数的顺序是: 1、调用基类构造函数, 2、调用子对象构造函数, 3、再执行派生类析构函数, 4、执行基类的析构函数。所以本题中执行析构函数为派生类的析构函数、 Father 的析构函数、 Mo

18、ther 的析构函数,所以输出 CFM,答案 C正确。 28 【正确答案】 D 【试题解析】 程序在 for循环中嵌套 while循环。 for循环的初始条件为, sum、 i初值为 0;进入 for循环之后,首先将 sum累加 i,此时 sum、 i仍为 0; while循环中,若 sum小于 100,则将 sum累加 i,继续 while循环;当 sum不满足条件时,退出循环。由于 sum、 i初值为 0,所以 while循环中 sum始终为 0,始终满足循环条件 sum100,所以程序进入死循环。答案为 D。 29 【正确答案】 D 【试题解析】 派生类对象的撤销顺序与构造顺序相反:首先

19、运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数,这样做是为了每 次析构函数销毁的都是完整的对象,选项 D错误,答案为 D。 30 【正确答案】 A 【试题解析】 二维表中的行称为元组,候选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。公司号唯一标识公司,员工号唯一标识员工,而雇佣需要公司号与员工号同时唯一标识,故表的键(码)为(公司号,员工号),故 A选项正确。 31 【正确答案】 C 【试题解析】 类 YY以 protected 方式继承类 XX,所以类 XX 中的 public成员和protected 成员在

20、YY中为 protected 成员,所以 YY中的 protected 成员有: x2,x3, y2,答案为 C。 32 【正确答案】 A 【试题解析】 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto语句,所以选择 A)。 33 【正确答案】 A 【试题解析】 本题考查函数实参个数的基础知识,根据实参的概念, (a+b)、 3、max(n-1,b)分别为其中的 3个实参。故答案为 A。 34 【正确答案】 C 【试题解析】 本题考查模板函数的基本概念,根据模板函数的定义, T 是模板形参,所以答案为 C。 35 【正确答案】 B 【试题解析】 本题考查指向数组的指针,

21、本题中指针变量 p 指向数组 a,直接使用数组下标即可取值,数组下标是从 0开始标号的,所以 a 2能取到 5,而 a 3取不到 5, C选项中使用指针后移方法能够取到 5, D选项中 *p为 1,所以*p+4为 5。 36 【正确答案】 C 【试题解析】 本题考查构造函数和析构函数,以及静态数据成员,题目中要求输出 2,那么定义两个对象时,就执行构造函数,使得静态数据成员 +count,得到2,那么 count初始化就应该 为 0,静态数据成员初始化时,只能在类体外进行初始化,一边形式为:数据类型类型:静态数据成员名 =初值 37 【正确答案】 B 【试题解析】 只有 B)选项 369可以用无符号整数来表示和存储。 A)选项 369有负号,选项 C)0.369是小数都不能用无符号整数类存储。选项 D)是一个整数集合得用数组来存储。 38 【正确答案】 A 【试题解析】 本题考查派生类对基类成员的访问属性,派生类公用继承基类,所以派生类可以直接使用基类的公用成员,所以只有 A选项正确。 39 【正确答案】 C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1