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

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

1、国家二级( C+)机试模拟试卷 89及答案与解析 一、选择题 1 如下类定义: class AA int a; public: int getRef()const return / int getValue()const return a; / void set(int n)const a=n; / friend void show(AA aa)const cout #include using namespace std; class MyBag public: MyBag(string br,string cr):brand(br),color(cr) cout“,使得程序中可以 “cin

2、 obj;“的形式改变 MyClass类的对象 obj中数据成员 data的值,则横线处的声明语句应为 ( )。 ( A) friendistream ( B) friendistream ( C) istream ( D) istream 16 有如下程序: #include using namespace std; class CC int k; public: CC(int n):k(n) int get()const return k; ; int main() CC c3=CC(1),CC(2); return 0; 此程序编译时未能通过,原因是 ( A)数组只能定义为基本数据类型

3、( B)类 CC缺少复制构造函数 ( C)对象数组只能作为类的数据成员 ( D)类 CC缺少默认的构造函数 17 下列关于 C+函数的叙述中,正确的是 ( A)函数不能自己调用自己 ( B)每个函数都必须返回一个值 ( C)每个函数至少要有一个参数 ( D)函数在被调用之前必须先进行声明或定义 18 有如下程序 #include using namespace std; class AA char c; public: AA(char ch):c(ch) cout using namespace std; class TV public: TV(int s=41):size(s) void P

4、rint() cout using namespace std; class Base public: Base() cout T cast(U u) return u; 其功能是将 U类型数据转换为 T类型数据。已知 i为 int型变量,下列对模板函数cast的调用中正确的是 ( )。 ( A) cast(i); ( B) castID=ID; CourseNum=courseNum; Record=record; voidStudentInfo: show() cout usingnamespacestd; constintMAXNUM=100; clasSSet private: int

5、num;元素个数 charsetdataMAXNUM;字符数组,用于存储集合元素 public: Set(char*s);构造函数,用字符串 S构造一个集合对象 boolInSet(charc); 判断一个字符 C是否在集合中,若在,返回 true,否则返回falsevoidPrint()const;输出集合中所有元素 ; Set: Set(char*s) num=0; while(*s) *found* if(_) TODO:添加代码,测试元素在集合中不存在 *found* _; TODO:添加一条语句,加入元素至集合中 s+; boolSet: InSet(charc) for(inti=

6、0; i usingnamespacestd; constintMax=100; classIntSet public: IntSet()构造一个空集合 end=-1; IntSet(inta, intsize) 构造一个包含数组 a中 size个元素的集合 if(Size=Max) end=Max-; else end=size-1; for(inti=0; i“,根据重载规则,本题答案为 A。 16 【正确答案】 D 【试题解析】 对象数组无论在哪里定义,都需要自动调用该对象元素的类的默认构造函数进行初始化,如果该类没有默认构造函数,必须为数组的元素提供显式初始化;程序中定义了对象数组 c

7、,它包含了三个元素,前两个元素使用构造函数CC(intn)显式初始化,最后一个元素需要使用默认构造函数初始化,由于类 CC中已经定义了构造函数,所以编译器不会自动生成默认的构造函数,缺少默认构造函数导致对象数组 c的第三个元素无法完成初始化,编译错误;答案为 D。 17 【正确答案】 D 【试题解 析】 函数可以自己调用自己,称为递归调用;函数返回类型为 void时,没有返回值;函数的参数列表中可以没有参数;函数在被调用前必须先进行函数声明或定义。 A、 B、 C错误, D正确;答案为 D。 18 【正确答案】 D 【试题解析】 构造函数初始化列表仅指定用于初始化成员的值,不指定这些初始化执行

8、的次序,成员初始化的次序是类定义中声明成员的次序,成员初始化完成后执行构造函数的函数体;所以程序中在创建 BB对象时,首先初始化 m1,再初始化 m2,由于 m1、 m2 都是 AA对象,且有实参 q、 p,所以调用构造函数AA(charch),用 ch 初始化成员 c后输出成员 c的值,即输出 q、 p,再执行类BB的函数体,输出 B;程序执行结束时,系统会自动调用类的析构函数清理自己的成员,析构函数工作过程: 1、执行析构函数的函数体; 2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员; 3、按原来构造顺序的相反顺序向上依次调

9、用基类的析构函数。所以程序运行结束时,首先调用 BB的析构函数并执行函数体,输出“b“;然后调用 m2 的析构函数,销毁 m2 成员,输出 a,再调用 m1 的析构 函数,销毁 m1 成员,输出 a;综上所述,程序运行的输出是: “qpBbaa“;答案为D。 19 【正确答案】 A 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。满二叉树指除最后一层外,每一层上的所有结点都有两个子结点的二叉树。深度为 7的二叉树,前 6层共有结点个数为 26-1=63,则第

10、 7层有 127-63=64个结点,即第 7层结点数达到最大值,故此二叉树为满二叉树 ,也是完全二叉树,该二叉树没有度为 1的结点,有 64个叶子结点。故正确答案为 A选项。 20 【正确答案】 B 【试题解析】 类的成员访问权限有 3种: public(公用 )、 protected(保护 )、private(私有 )。 21 【正确答案】 B 【试题解析】 本题考查流对象 cin,属于基础知识, cin是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为 B。 22 【正确答案】 D 【试题解析】 如果使用用户自己定义的函数,而该函数与调用它的函数 (即主调用函数 )在同一程序单 元

11、中,且位置在主调用函数之后,则必须在调用此函数之前对被调用的函数作声明。 23 【正确答案】 C 【试题解析】 本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类的一般形式为: class派生类名: 继承方式 基类名题目中只有公用继承才能使用基类中 name成员,所以 C选项正确。 24 【正确答案】 D 【试题解析】 因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为 m: n。 25 【正确答案】 A 【试题解析】 本题考查运算 符重载,重载不能改变运算符运算对象的个数;不能改变运算符的优先级别;不能改变运算符的结合性;重载运算符的函数

12、不能有默认值,否则就改变了运算符参数的个数;不能定义新的运算符,某些运算符不能重载。所以 A选项错误。 26 【正确答案】 B 【试题解析】 本题考查输入输出格式的控制,先是定义宽度为 10个字符,然后填充字符, 1234只有四个字符,所以要在左侧填充 6个 *,即输出 *1234, B选项正确。 27 【正确答案】 D 【试题解析】 extern 定义的变量表示已经在别的地方定义,这里 只是引用,所以不会对该变量分配内存空间,所以 D选项错误。 28 【正确答案】 D 【试题解析】 本题考查了常对象和常成员函数,本题中定义了常对象 room1,执行 room1.Print();时,引用常成员

13、函数 Print,输出 /C41,执行 TVroom2(54)时输出 /N54,所以答案为 D 29 【正确答案】 D 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为 0的结点(即叶子结点)总是比度为 2的结点多一个。叶子结点有 435个,则度为 2的结点为 434, D选项正确。 30 【正确答案】 B 【试题解析】 派生类构造函数在构造派生类过程中,首先初始化基类,然后根据声明次序初始化派生类的成员,最后执行函数体;析构函数在程序结束时负责撤销自己的成员,首先运行派生类析构函数,然后按继承层次依次向上调用各基类析构函数

14、;在 main 函数中,创建 Derived 类对象 obj,此时调用 Derived的构造函数,构造函数在进入函数体之前,又调用基类 Base的构造函数构造基类,由于Derived中没有数据成员,所以构造完基类,执行函数体,输 出为: “BD“;撤销obj对象时,首先执行 Derived的析构函数,然后调用基类的析构函数,输出为“db“;答案为 B。 31 【正确答案】 D 【试题解析】 需求分析阶段的工作可以分为个方面:需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系统的功能, D选项正确。 A、 B、C选项均为开发阶段工作。 32 【正确答案】 D 【试题解析】 题目需要

15、声明类型转换运算符 int,类型转换运算符是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换,其中转换函数必须是成员函数, 不能指定返回类型,并且形参列表必须为空,所以 int类型转换运算符的声明为: operatorint();选项 A、 B、 C错误;答案为 D。 33 【正确答案】 D 【试题解析】 本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为D。 34 【

16、正确答案】 A 【试题解析】 重载运算符 的规则如下: C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载; C+不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变运算符的优先级和结合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为 A。 35 【正确答案】 B 【试题解析】 本题考查基类和派生类的逻辑关系,属于基础知识,如果没有指明哪种继承方式,那么默认为私有继承,所以 B选项错 误。 36 【正确答案】 D 【试题解析】 用来表示

17、变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线 3种字符组成,且第一个字符必须为字母或者下划线。所以 D选项错误。 37 【正确答案】 A 【试题解析】 本题考查如何在类体外定义成员函数,在类体外定义成员函数需要使用作用域运算符:,只有 A选项符合定义格式,所以 A选项正确。 38 【正确答案】 C 【试题解析】 黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使 用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为 C。而 A、 B、 D均为白盒测试方法。 39 【正

18、确答案】 C 【试题解析】 本题考查派生类对基类成员的访问属性,派生类保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,所以派生类 YY总共有 3个保护成员, C选项正确。 40 【正确答案】 A 【试题解析】 数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序 的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。故 A选项正确。 二、基本操作题 41 【正确答案】 (1)char *Name; (2)StudentInfo(char *name, int age, int ID, in

19、t courseNum, float record); (3)void StudentInfo:show() const 【试题解析】 (1)主要考查考生对字符指针的掌握 ,由构造函数的函数体 Name = strdup(name),可知 Name应该为字符指针。 (2)主要考查考生对构造函数的掌握 ,构造函数前不能添加任何返回类型。 (3)主要考查考生对 const函数的掌握 ,由类的定义 void show()const,可知 show函数是 const函数。 三、简单应用题 42 【正确答案】 (1)!InSet(*s) (2)setdatannm+=*s (3)c=setdatai (4)returntrue 【试题解析】 (1)主要考查考生对成员函数的掌握,题目要求:添加代码,测试元素在集合中不存在,由类的定义可知函数 boolInSet(charc)可以测试字符 c是否在集合中,因此这里直接调用函数 boolInSet(charc)即可。 (2)题目要求:添加一条语句,加入元素至集合中,集合用数组 setdata表示,直接把元素添加到数组中即可。

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

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

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