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

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

1、国家二级( C+)机试模拟试卷 119及答案与解析 一、选择题 1 关于函数声明格式中的 ,下列叙述错误的是 ( A) 有可能包含关键字 true ( B) 有可能包含自定义标识符 ( C) 有可能包含字符 * ( D) 有可能包含关键字 float 2 下列关于运算符重载的叙述中,错误的是 ( A)不能通过运算符重载在 C+ 中创建新的运算符 ( B)赋值运算符只能重载为成员函数 ( C)运算符函数重载为类的成员函数时,第一操作数是该类对象 ( D)重载类型转换运算符时,应声明返回类型为 void 3 下列运算符中,不能被重载的是 ( A) | ( B) += ( C) . ( D) - 4

2、 下列叙述中正确的足 ( )。 ( A)循环队列是顺序存储结构 ( B)循环队列是链式存储结构 ( C)循环队列是非线性结构 ( D)循环队列的插入运算不会发生溢出现象 5 下列叙述中正确的是 ( )。 ( A)所有数据结构必须有根结点 ( B)所有数据结构必须有终端结点 (即叶子结点 ) ( C)只有一个根结点,且只有一个叶子结点的数据结构一定是线 性结构 ( D)没有根结点或没有叶子结点的数据结构一定是非线性结构 6 下列关于算法的描述中错误的是 ( ) ( A)算法强调动态的执行过程,不同于静态的计算公式 ( B)算法必须能在有限个步骤之后终止 ( C)算法设计必须考虑算法的复杂度 (

3、D)算法的优劣取决于运行算法程序的环境 7 在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数 ( )。 ( A)相同,元素的存储顺序与逻辑顺序一致 ( B)相同,但其元素的存储顺序可以与逻辑顺序不一致 ( C)不同,但元素的存储顺序与逻 辑顺序一致 ( D)不同,且其元素的存储顺序可以与逻辑顺序不一致 8 设二叉树如下: 则中序序列为 ( )。 ( A) ABDEGCFH ( B) DBGEAFHC ( C) DGEBHFCA ( D) ABCDEFGH 9 下面不属于软件需求分析阶段工作的是 ( )。 ( A)需求获取 ( B)需求计划 ( C)需求分析 ( D)需求评审 10

4、 下面不属于黑盒测试方法的是 ( )。 ( A)边界值分析法 ( B)基本路径测试 ( C)等价类划分法 ( D)错误推测法 11 在数据库系统中,数 据模型包括概念模型、逻辑模型和 ( )。 ( A)物理模型 ( B)空间模型 ( C)时间模型 ( D)数据模型 12 若实体 A和 B是一对一的联系,实体 B和 c是多对一的联系,财实体 A和 c的联系是 ( )。 ( A)多对一 ( B)一对多 ( C)一对一 ( D)多对多 13 某二叉树中共有 935个结点,其中叶子结点有 435个,则该二叉树中度为 2的结点个数为 ( )。 ( A) 64 ( B) 66 ( C) 436 ( D)

5、434 14 下列描述中,属于面向对象思想主要特征的是 ( )。 ( A)继承性 ( B)灵活性 ( C)可重用性 ( D)健壮性 15 有如下程序段: int i=10; while(1) i+: if(i=30)13reak; if(i 2=0)cout using namespace std; void fun(int&a, _) int c; c=a; a=b; b=c; int main() int x, y; x=1; y=2; fun(x, y); eout using namespaee std; class AA public: AA()eout using namespae

6、e std; class Shape图形类 public: 图形绘制函数 (用显示字母模拟 ) virtual void draw()eonsttoutdraw(); int main() Shape s; Triangle t; plot(&s); plot(&t); s=t: s draw(); return 0; 运 行这个程序的输出是 ( )。 ( A) STT ( B) STS ( C) TSS ( D) TTT 41 有如下的类声明: #include using namespace std; class AA public: virtual void disp()eout usi

7、ng namespace std; class Door int num;门号 bool dosed; true表示门关着 bool locked; true表示门锁着 public: Door(int num) ERROR*found* nm=this-Rum; closed=locked=true; bool isClosed()eonstreturn dosed; 门关着时返回 true,否则返回 false bool isOpened()eonstlreturn!closed; 门开着时返回 true,否则返回 false bool isLoeked()eonstreturn lock

8、ed; 门锁着时返回 true,否则返回 false bool islJnlocked()eonstretllm!locked; 门未锁时返回 true,否则返回 false void open() 开门 eout using namespace std; class Time private: int hour; int minute; int second; public: Time(int h, int m, int S) this-hour=h: this-minute=m: this-second=s; bool operator(Time&fight)const if(this-h

9、ourright hour | (this_hour=right hour&this_minuteright minute)| (this-hour=right hour&this-minute=right minute&this-secondright second) *found* _; return false; ; class StreetLight private: int id: bool is_on; Time current_time; public: StreetLight(int id, int hour, int minute, int second) *found* :

10、 _ this-is_on=false: this-id=id: void turn-on() this-is_on=true; coutidis_on) return false; if(current_timetime_threshold) return true; *found* retum_; int main() StreetLight* lightl=new StreetLight(1, 17, 34, 45); StreetLight*light2=new StreetLight(2, 18, 34, 45); Time time_threshold(18, 0, 0); if(

11、1ightl-check(time_threshold) lightl-turn_on(); if(1ight2-check(time_threshold) light2-turn_on(); return 0; 四、综合应用题 46 请使用 VC6或使用 答题 菜单打开考生文件夹 proj3下的工程 proj3,其中声明的 DataList类,是一个用于表示数据表的类。 sort成员函数的功能是将当前数据表中的元素升序排列。请编写这个 sort函数。程序的正确输出应为: 排序前: 7, 1, 3, 1 1, 6, 9, 12, 10, 8, 4, 5, 2 排序后: 1, 2, 3, 4,

12、5, 6, 7, 8, 9, 10, 1 1, 12 要求: 补充编制的内容写在 “ *333*”与“*666*”两行之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数 writeToFile已经编译为 obj文件,并且在本程序调用。 DataList h #include using namespaee std; class DataList数据表类 mt len double * d; public: DataList(int len, double data=NULL); DataList()deleted; int length()eonstre

13、tum len; 数据表长度 (即数据元素的个数 ) double getElement(int i)eonstreturn di; void sort();数据表排序 void show()eonst;显示数据表 ; void writeToFie(char*, eonst DataList&); main epp #include“DataList h“ DataList: DataList(int len, double data): len(1en) d=new double1en; for(int i=0; ilen; i+) di=(data=NULL?0 0: datai); v

14、oid DataList: sort()数据表排序 *333* *666* void DataList: show()eonst显示数据表 for(int i=0; ilen-1; i+)eoutdi“, “; eoutdlen-1endl; int main() double s=7, 1, 3, 11, 6, 9, 12, 10, 8, 4, 5, 2; DataList list(12, s); eout“排序前: “; list show(); list sort(); eoutendl“排序后: “; list show(); writeToFile(“, list); return

15、 0; 国家二级( C+)机试模拟试卷 119答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 本题考查函数返回类型,函数返回类 型可以是普通常量型的,可以返回指针以及自定义类型,但是不能包含关键字 true,所以 A选项错误。 2 【正确答案】 A 【试题解析】 本题考查运算符重载,重载不能定义新的运算符,且赋值运算符只能重载为成员函数,重载类型转换运算符时,声明返回类型不一定是 void,所以D选项错误。 3 【正确答案】 D 【试题解析】 本题考查运算符重载,不能重载的运算符只有 5个: .、 .*、 :、sizeof、 ?: 所以本题选择 C 4 【正确答案】 A 【试题解析

16、】 循环队列是队列的一种顺序存储结构, 线性结构是 n个数据元素构成的有限序列,除第一个元素外的每一个元素,有且只有一个前件,除最后一个元素外,有且只有一个后件。循环队列是线性结构。当需要插入的数据大于循环队列的存储长度,入队运算会覆盖前面的数据,发生溢出现象。故 A选项正确。 5 【正确答案】 D 【试题解析】 一个非空的数据结构如果满足以下两伞条件:有且只有一伞根结点;每 个结点最多有一个前件,也最多有一个后件,称为线性结构,在数据结构中习惯称为线性表, D选项正确。图是可能不包含根结点或叶子结点的数据结构, AB选项错误。数据结构中若有中 间结点不满足只有一个前件或者后件条件,则不属于线

17、性结构, c选项错误。 6 【正确答案】 D 【试题解析】 算法是指对解题方案的准确而完整的描述,简单地说,就是解决问题的操作步骤。算法不同于数学上的计算方法,强调实现, A选项叙述正确。算法的有穷性是指,算法中的操作步骤为有限个,且每个步骤都能在有限时间内完成, B选项叙述正确。算法复杂度包括算法的时间复杂度和算法的空间复杂度。算法设计必须考虑执行算法所需要的资源,即时间与空间复杂度,故 C选项叙述正确。算法的优劣取决于算法复杂度,与程序的环境无关 ,当算法被编程实现之后,程序的运行受到计算机系统运行环境的限制,故正确答案为 D选项。 7 【正确答案】 A 【试题解析】 顺序表具有以下两个基

18、本特征:线性表中所有元素所占的存储空间是连续的;线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。在顺序表中,每个元素占有相同的存储单元。 A选项正确。 8 【正确答案】 B 【试题解析】 二叉树遍历可以分为 3种:前序遍历 (访问根结点在访问左子树和访问右子树之前 )、中序遍历 (访问根结点在访问左子树和访问右子树两者之间 )、后序遍历 (访问根结点在访问 左子树和访问右子树之后 )。本题中前序遍历为ABDEGCFH,中序遍历为 DBGEAFHC,后序遍历为 DGEBHFCA,故 B选项正确。 9 【正确答案】 B 【试题解析】 需求分析阶段的工作可以分为 4个方面:需求获取、需求分析、

19、编写需求规格说明书和需求评审,而需求计划不属于需求分析阶段的工作,故正确答案为 B选项。 10 【正确答案】 B 【试题解析】 常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误推测法和因果图等。基本路径测试属于白盒测试,故正确答案为 B选项。 11 【正确答案】 A 【试题解析】 数据模型按照不同的应用层次分为 3种类型:概念数据模型、逻辑数据模型、物理数据模型,故 A选项正确。 12 【正确答案】 A 【试题解析】 一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系 (1: 1)、一对多联系 (1: m)、多对多联系 (m: n)。 A与 B是 1: 1联系,

20、B与 C是 m: 1联系,则 A与 C是 m: 1联系,即多对一,故 A选项正确。 13 【正确答案】 D 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大 的度称为树的度。对任何一棵二叉树,度为 0的结点 (即叶子结点 )总是比度为 2的结点多一个。叶子结点有 435个,则度为 2的结点为 434, D选项正确。 14 【正确答案】 A 【试题解析】 面向对象思想的主要特征有:封装、继承和多态。答案选 A。 15 【正确答案】 C 【试题解析】 程序首先定义一个整型变量 i并初始化为 10, while循环条件为 l,始终为真,所以只有执行 break语句才能

21、结束循环。在 while循环中, i自增运算语句在循环开始,所以 while语句第一次循环, i值自增为 11,最后一次 循环开始时, i值为 29;另外输出语句中若 i为偶数则输出 “*”,综上 while循环中在 i自增1后取值为: 12, 14, 16, 18, 20, 22, 24, 26, 28时,输出 “*”;答案为 C。 16 【正确答案】 D 【试题解析】 C+的标识符由字母、数字和下划线组成, A、 B、 C错误,答案为 D。 17 【正确答案】 B 【试题解析】 字符型常量是用单引号括起来的一个字符。 B选项中 “n”是字符串常量,答案为 B。 18 【正确答案】 A 【试

22、题解析】 选项 B中, y=1语句后面少了分号 “; ”;选项 c中, then不是关键字,不符合 if语法;选项 D中,条件部分 x!=0必须用圆括号括起来;只有选项 A正确,整型变量 x在条件中转化为逻辑变量,非 0情况下都转化为 1;答案为 A。 19 【正确答案】 D 【试题解析】 该题是隐式类型转换。首先 2 3会按照 int型来计算,结果自然是0,由于赋值运算符左操作数对象是 double型,所以需要将 int型结果转换为double型 0 0,答案为 D。 20 【正确答案】 D 【试题解析】 函数声明由函数返回类型、函数名和形参列表组成,形参列表中必须 包含形参类型,不必对形参

23、命名。答案为 D。 21 【正确答案】 D 【试题解析】 出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,称为重载函数。选项 A中,仅当形参是引用或指针时,形参是否为 const对重载才有影响,这里 const对重载没有影响,另外函数不能仅仅基于不同的返回类型实现重载, A错误;选项 B中,当调用函数 fun(x)只带有一个实参时,两个函数都匹配,该调用具有二义性, B错误;选项 C中形参列表只有默认参数不同,默认参数并不改变形参个数, C错误;选项 D正确,形参列表中参数个数不同 ;答案为 D。 22 【正确答案】 C 【试题解析】 流运算符 “”不能重载为类的成员函数,因为一

24、旦该操作符重载为类的成员函数,那么左操作数将只能是该类类型的对象,这样的用法与正常 IO使用方式相反。为了支持正常用法,左操作数必须为 ostream类型。但是,标准库中的类是不能人为添加成员的,答案为 C。 23 【正确答案】 C 【试题解析】 友元函数不是类的成员函数,所以友元函数的调用不需要使用类对象;另外运算符重载不改变运算符的优先级,所以表达式 c2*c1+先执行 c1+;为了区分运算 符的前缀和后缀形式,规定后缀式运算符函数接受一个额外的 int型形参,使用时可以提供 0作为形参的实参,所以 c1+相当于叩 erator+(c1, 0),c2*c1+相当于 c2 operator*

25、(opemtor+(c1, 0);答案为 C。 24 【正确答案】 A 【试题解析】 横线处填写的语句,是重载前缀自增运算符 +的函数声明,为了与内置类型一致,前缀自增运算符应该返回自增对象的引用,选项 C、 D错误;自增运算符是一元运算符,即操作数是类对象,所以参数列表为空,选项 B错误;答案为 A。 25 【正确答案】 C 【试题解析】 main函数中定义两个整型变量 x=1, y=2,由输出 x, y的结果为21,可知函数 fun的功能是交换两个实参的值,由于函数 fun中未使用指针类型的变量,所以若想通过函数 fun交换实参的值,形参类型必然为引用类型,横线处语句为 int&b,答案为

26、 C。 26 【正确答案】 B 【试题解析】 复制构造函数用于以下情况:根据另一个同类型的对象显式或隐式初始化一个对象;复制一个对象,将它作为实参传给一个函数;从函数返回时复制一个对象;初始化顺序容器中的元素;根据元素 初始化列表初始化数组元素。选项 B中调用赋值运算符,而不是复制构造函数,答案为 B。 27 【正确答案】 B 【试题解析】 C+中,静态成员是类的组成部分,不是任何对象的组成部分,因此静态成员函数没有 this指针,类的非 const成员函数包括静态成员函数,所以选项 A、 C错误;答案选 B或 D。 28 【正确答案】 C 【试题解析】 C+中,不能在类中直接初始化 cons

27、t数据成员,因为在类没有被初始化时,成员是不存在的,所以 const数据成员必须在构造函数初始化列表中初始化,语句 1、 4正确,语 句 2错误;另外类的 static数据成员不能在类定义中初始化,也不能通过类的构造函数进行初始化,而必须在类定义体的外部定义,语句 3错误;答案为 C。 29 【正确答案】 C 【试题解析】 类的非静态成员函数都隐含 this指针,静态成员是类的组成部分,不是任何对象的组成部分,因此静态成员函数没有 this指针,选项 D错误;友元函数不属于成员函数,没有 this指针,选项 A、 B错误;答案为 C。 30 【正确答案】 C 【试题解析】 C+中,只有当一个类

28、没有定义构造函数时,编译器才会自动生成一个默认 构造函数,一个类哪怕只定义了一个构造函数,编译器也不会再生成默认构造函数;答案为 C。 31 【正确答案】 D 【试题解析】 派生类对基类成员的访问权限由基类成员的访问标识和类派生列表中的访问标识共同决定的,类 D公有继承类 B,所以类 B中成员函数 funl对类 D不可见;成员函数 fun2为类 D的 protected成员;成员函数 fun3为类 D的 public成员;综上所述 funl, fun2, fun4对类 D对象 obj均不可见, fun3对 obj可见,答案为 D。 32 【正确答案】 D 【试题解析】 派生 类对象的撤销顺序与

29、构造顺序相反:首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数,这样做是为了每次析构函数销毁的都是完整的对象,选项 D错误,答案为 D。 33 【正确答案】 A 【试题解析】 C+中,实现运行时多态性必须满足两个条件: 1、被调用的成员函数为虚函数; 2、调用必须通过基类类型的引用或指针。选项 B、 C、 D正确;多态性是虚函数在运行时期绑定,而重载的函数是在编译期绑定,重载主要是为了 C+的代码复用,与多态性没有关系;答案为 A。 34 【正确答案】 C 【试题解析 】 只有当类定义体完成之后才能定义类,题目中四个声明语句位置,Fin类未定义完整,属于不完全类型,此时数据成员

30、只能是指向该类类型的指针或引用,而不能是该类的对象;语句 3会产生编译错误;答案为 c。 35 【正确答案】 B 【试题解析】 C+中,触发多态性必须满足两个条件: 1、被调用函数为虚函数; 2、必须通过基类类型的引用或指针调用函数,选项 A、 C正确;非多态调用虚函数只能通过类对象调用,类对象调用虚函数使用成员访问运算符 “ ”进行,选项 D正确;一旦函数在基类中被声明为虚函数,那它在后续的派生类中都 是虚函数,可以不使用 virtual关键字,派生类无法改变该函数是虚函数这一事实;选项 B错误;答案为 B。 36 【正确答案】 B 【试题解析】 C+中,派生类构造函数都是先调用基类构造函数,再根据声明次序定义数据成员,所以 Derired构造函数的初始化列表中,最后初始化 q;另外对于多继承,派生类的构造函数初始化列表中,基类构造函数是按照基类在派生类的派生列表中出现的次序调用的;由于 Derived类的派生列表中, Base2存前,所以应该先调用 Base2的构造函数;这样 Derived类中初始化顺序为: 基类 Base2、基类 Basel、数据成员 q;所以数据成员 m、 n、 q的初始化顺序为: n、 m、 q,答案为 B。 37 【正确答案】 A 【试题解析】 C+中,常数据成员必须在构造函数的初始化列表中完成初始化,答案为 A。 38 【正确答案】 C

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

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

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