ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:96.50KB ,
资源ID:1334584      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1334584.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】国家二级(C++)机试-试卷17-1及答案解析.doc)为本站会员(王申宇)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】国家二级(C++)机试-试卷17-1及答案解析.doc

1、国家二级(C+)机试-试卷 17-1 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)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“,使得程序中可以“cin obj;“的形式改变 MyClass 类的对象 obj 中数据成员 data 的值,则横线处的声明语句应为( )。(分数:2.00)A.frie

2、ndistreamB.friendistreamC.istreamD.istream16.有如下程序: #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; 此程序编译时未能通过,原因是(分数:2.00)A.数组只能定义为基本数据类型B.类 CC 缺少复制构造函数C.对象数组只能作为类的数据成员D.类 CC 缺少默认的构造函数17.下列关于 C+函数的叙述中,正确的是(分数:2.

3、00)A.函数不能自己调用自己B.每个函数都必须返回一个值C.每个函数至少要有一个参数D.函数在被调用之前必须先进行声明或定义18.有如下程序 #include using namespace std; class AA char c; public: AA(char ch):c(ch) cout(i);C.cast(i);D.cast(i);34.下列有关运算符重载的叙述中,正确的是( )。(分数:2.00)A.运算符重载是多态性的一种表现B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数重载D.重载运算符时可以改变其结合性35.下列代码段中声明了 3 个类:

4、class Person ;class Student : public Person ;class Undergraduate : Student ;下列关于这些类之间关系的描述中,错误的是( )。(分数:2.00)A.类 Person 是类 Undergraduate 的基类B.类 Undergraduate 从类 Student 公有继承C.类 Student 是类 Person 的派生类D.类 Undergraduate 是类 Person 的派生类36.下列字符串中不能作为 C+标识符使用的是(分数:2.00)A.INTB.testC._1481D.1temp37.有如下类定义: c

5、lass Cup public: void SetPrice(double val); private: double price; ;若要在类体外给出对成员函数 SetPrice 的定义,下列选项中正确的是(分数:2.00)A.voidCup:SetPrice(doubleval)price=val;B.voidCup.SetPrice(doubleval)price=val;C.voidSetPrice(doubleval)Cup:price=val;D.voidSetPrice(doubleval)Cup.price=val;38.下面属于黑盒测试方法的是(分数:2.00)A.语句覆盖B

6、.逻辑覆盖C.边界值分析D.路径覆盖39.有如下两个类定义: class XX private: double x1; protected: double x2; public: double x3; ;class YY: protected XX private: double y1; protected: double y2; public: double y3; ;在类YY 中保护成员变量的个数是(分数:2.00)A.1B.2C.3D.440.当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的(分数:2.00)A.逻辑独立性B.物理独立性C.应用独立性D.空间独立性二、基

7、本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1。程序中位于每个“ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:Name:SmithAge:21ID:99999CourseNum:12Record:970 注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostreamusingnamespacestd;classStudentInfoprotected:ERROR*found*charName;intAge;intID;int

8、CourseNum;floatRecord;public:ERROR*found*voidStudentInfo(char*name,intage,intID,intcourseNum,floatrecord);ERROR*found*voidStudentInfo()deleteName;floatAverageRecord()returnRecordCourseNum;voidshow()const;StudentInfo:StudentInfo(char*name,intage,intID,intcourseNum,floatrecord)Name=strdup(name);Age=ag

9、e;this-ID=ID;CourseNum=courseNum;Record=record;voidStudentInfo:show()cout“Name:“Name“Age:“Age“ID:“ID“CourseNum:“CourseNum“Record:“Recordend1;intmain()StudentInfost(“Smith“,21,99999,12,970);stshow();return0;(分数:2.00)_三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2,该工程中含有一个源程序文件 pro

10、j2cpp。其中定义了类 Set 和用于测试该类的主函数 main。类 Set 是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将“a”和“A”视为不同元素),元素最大个数为 100。为该类实现一个构造函数 Set(char*s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数 InSet(charc),用于测试一个字符 C 是否在个集合中,若在,则返回 true;否则返回 false。构造函数 Set 和成员函数 InSet 的部分实现代码已在文件proj2cpp 中给出,请在标有注释“TODO:”的行中添加适当的代码

11、,将这两个函数补充完整,以实现其功能。提示:在实现构造函数时,可以调用 InSet 函数来判断一个字符是否已经在集合中。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。proj2cpp#includeiostreamusingnamespacestd;constintMAXNUM=100;clasSSetprivate:intnum;元素个数 charsetdataMAXNUM;字符数组,用于存储集合元素 public:Set(char*s);构造函数,用字符串 S 构造一个集合对象 boolInSet(charc);判断一个字符 C 是否在集合中

12、,若在,返回 true,否则返回 falsevoidPrint()const;输出集合中所有元素;Set:Set(char*s)num=0;while(*s)*found*if(_)TODO:添加代码,测试元素在集合中不存在*found*_;TODO:添加一条语句,加入元素至集合中s+;boolSet:InSet(charc)for(inti=0;inum;i+)*found*if(_)TODO:添加代码,测试元素 C 是否与集合中某元素相同*found*_;TODO:添加一条语句,进行相应处理returnfalse;voidSet:Print()constcout“Setelements:“

13、end1;for(inti=0;inum;i+)coutsetdatai“;coutend1;intmain()charsMAXNUM;cingetline(s,MAXNUM-1);从标准输入中读入一行 Setsetobj(s);构造对象 setobjsetobjPrint();显示对象 setobj 中内容 return0;(分数:2.00)_四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 IntSet 是一个用于表示正整数集合的类。IntSet 的成员函数 Merge 的功能是求当前集合与另一

14、个集合的并集,在 Merge中可以使用成员函数 IsMemberOf 判断_个正整数是否在集合中。请完成成员函数 Mellge。在 main 函数中给出了一组测试数据,此时程序的输出应该是:求并集前:123581028911305667 求并集后:1235810289113056671235810911305667 要求:补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件outdat 中。输出函数 writeToFile 已经编译为 obj 文件,并且在本程序中调用。Intseth#includeiostreamusingnamespa

15、cestd;constintMax=100;classIntSetpublic:IntSet()构造一个空集合end=-1;IntSet(inta,intsize)构造一个包含数组 a 中 size 个元素的集合if(Size=Max)end=Max-;elseend=size-1;for(inti=0;i=end;i+)elementi=ai;boolIsMemberOf(inta)判断 a 是否为集合中的元素for(inti=0;i=end;i+)if(elementi:=a)returntrue;returnfalse;intGetEnd()returnend;)返回最后一个元素的下标i

16、ntGetElement(inti)returnelementi;返回下标 i 处的元素 IntSetMerge(IntSetpublic:int getRef()const return /int getValue()const return a; /void set(int n)const a=n; /friend void show(AA aa)const cout“,使得程序中可以“cin obj;“的形式改变 MyClass 类的对象 obj 中数据成员 data 的值,则横线处的声明语句应为( )。(分数:2.00)A.friendistream B.friendistreamC.

17、istreamD.istream解析:解析:本题考查重载流运算符“,根据重载规则,本题答案为 A。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; 此程序编译时未能通过,原因是(分数:2.00)A.数组只能定义为基本数据类型B.类 CC 缺少复制构造函数C.对象数组只能作为类的数据成员D.类 CC 缺少默认的构造函数 解析:解析:对象数组无论在哪里定义,都

18、需要自动调用该对象元素的类的默认构造函数进行初始化,如果该类没有默认构造函数,必须为数组的元素提供显式初始化;程序中定义了对象数组 c,它包含了三个元素,前两个元素使用构造函数 CC(intn)显式初始化,最后一个元素需要使用默认构造函数初始化,由于类 CC 中已经定义了构造函数,所以编译器不会自动生成默认的构造函数,缺少默认构造函数导致对象数组 c 的第三个元素无法完成初始化,编译错误;答案为 D。17.下列关于 C+函数的叙述中,正确的是(分数:2.00)A.函数不能自己调用自己B.每个函数都必须返回一个值C.每个函数至少要有一个参数D.函数在被调用之前必须先进行声明或定义 解析:解析:函

19、数可以自己调用自己,称为递归调用;函数返回类型为 void 时,没有返回值;函数的参数列表中可以没有参数;函数在被调用前必须先进行函数声明或定义。A、B、C 错误,D 正确;答案为D。18.有如下程序 #include using namespace std; class AA char c; public: AA(char ch):c(ch) cout(i);C.cast(i);D.cast(i); 解析:解析:本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,

20、这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为 D。34.下列有关运算符重载的叙述中,正确的是( )。(分数:2.00)A.运算符重载是多态性的一种表现 B.C+中可以通过运算符重载创造新的运算符C.C+中所有运算符都可以作为非成员函数重载D.重载运算符时可以改变其结合性解析:解析:重载运算符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有 5 个;重载不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对象一起使

21、用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为A。35.下列代码段中声明了 3 个类:class Person ;class Student : public Person ;class Undergraduate : Student ;下列关于这些类之间关系的描述中,错误的是( )。(分数:2.00)A.类 Person 是类 Undergraduate 的基类B.类 Undergraduate 从类 Student 公有继承 C.类 Student 是类 Person 的派生类D.类 Undergraduate 是类 Person 的派生类解析:解析:本题考查基

22、类和派生类的逻辑关系,属于基础知识,如果没有指明哪种继承方式,那么默认为私有继承,所以 B 选项错误。36.下列字符串中不能作为 C+标识符使用的是(分数:2.00)A.INTB.testC._1481D.1temp 解析:解析:用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线 3 种字符组成,且第一个字符必须为字母或者下划线。所以 D 选项错误。37.有如下类定义: class Cup public: void SetPrice(double val); private: double price; ;若要在类体外给出对成员函数 SetP

23、rice 的定义,下列选项中正确的是(分数:2.00)A.voidCup:SetPrice(doubleval)price=val; B.voidCup.SetPrice(doubleval)price=val;C.voidSetPrice(doubleval)Cup:price=val;D.voidSetPrice(doubleval)Cup.price=val;解析:解析:本题考查如何在类体外定义成员函数,在类体外定义成员函数需要使用作用域运算符:,只有 A 选项符合定义格式,所以 A 选项正确。38.下面属于黑盒测试方法的是(分数:2.00)A.语句覆盖B.逻辑覆盖C.边界值分析 D.路

24、径覆盖解析:解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为 C。而 A、B、D 均为白盒测试方法。39.有如下两个类定义: class XX private: double x1; protected: double x2; public: double x3; ;class YY: protected XX private: double y1; protected: double y2; public: double y3; ;在类YY 中保护成员变量

25、的个数是(分数:2.00)A.1B.2C.3 D.4解析:解析:本题考查派生类对基类成员的访问属性,派生类保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,所以派生类 YY 总共有 3 个保护成员,C 选项正确。40.当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的(分数:2.00)A.逻辑独立性 B.物理独立性C.应用独立性D.空间独立性解析:解析:数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。故 A 选项正确。

26、二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1。程序中位于每个“ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:Name:SmithAge:21ID:99999CourseNum:12Record:970 注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostreamusingnamespacestd;classStudentInfoprotected:ERROR*found*charName;intAge;intID;

27、intCourseNum;floatRecord;public:ERROR*found*voidStudentInfo(char*name,intage,intID,intcourseNum,floatrecord);ERROR*found*voidStudentInfo()deleteName;floatAverageRecord()returnRecordCourseNum;voidshow()const;StudentInfo:StudentInfo(char*name,intage,intID,intcourseNum,floatrecord)Name=strdup(name);Age

28、=age;this-ID=ID;CourseNum=courseNum;Record=record;voidStudentInfo:show()cout“Name:“Name“Age:“Age“ID:“ID“CourseNum:“CourseNum“Record:“Recordend1;intmain()StudentInfost(“Smith“,21,99999,12,970);stshow();return0;(分数:2.00)_正确答案:(正确答案:(1)char *Name; (2)StudentInfo(char *name, int age, int ID, int courseN

29、um, float record); (3)void StudentInfo:show() const)解析:解析:(1)主要考查考生对字符指针的掌握,由构造函数的函数体 Name = strdup(name),可知 Name应该为字符指针。 (2)主要考查考生对构造函数的掌握,构造函数前不能添加任何返回类型。 (3)主要考查考生对 const 函数的掌握,由类的定义 void show()const,可知 show 函数是 const 函数。三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下的工程 proj2,该工程中含有一个源

30、程序文件 proj2cpp。其中定义了类 Set 和用于测试该类的主函数 main。类 Set 是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将“a”和“A”视为不同元素),元素最大个数为 100。为该类实现一个构造函数 Set(char*s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数 InSet(charc),用于测试一个字符 C 是否在个集合中,若在,则返回 true;否则返回 false。构造函数 Set 和成员函数 InSet 的部分实现代码已在文件proj2cpp 中给出,请在标有注释“TODO:”的行

31、中添加适当的代码,将这两个函数补充完整,以实现其功能。提示:在实现构造函数时,可以调用 InSet 函数来判断一个字符是否已经在集合中。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*found*”。proj2cpp#includeiostreamusingnamespacestd;constintMAXNUM=100;clasSSetprivate:intnum;元素个数 charsetdataMAXNUM;字符数组,用于存储集合元素 public:Set(char*s);构造函数,用字符串 S 构造一个集合对象 boolInSet(charc);判断一个字符

32、C 是否在集合中,若在,返回 true,否则返回 falsevoidPrint()const;输出集合中所有元素;Set:Set(char*s)num=0;while(*s)*found*if(_)TODO:添加代码,测试元素在集合中不存在*found*_;TODO:添加一条语句,加入元素至集合中s+;boolSet:InSet(charc)for(inti=0;inum;i+)*found*if(_)TODO:添加代码,测试元素 C 是否与集合中某元素相同*found*_;TODO:添加一条语句,进行相应处理returnfalse;voidSet:Print()constcout“Setel

33、ements:“end1;for(inti=0;inum;i+)coutsetdatai“;coutend1;intmain()charsMAXNUM;cingetline(s,MAXNUM-1);从标准输入中读入一行 Setsetobj(s);构造对象 setobjsetobjPrint();显示对象 setobj 中内容 return0;(分数:2.00)_正确答案:(正确答案:(1)!InSet(*s) (2)setdatannm+=*s (3)c=setdatai (4)returntrue)解析:解析:(1)主要考查考生对成员函数的掌握,题目要求:添加代码,测试元素在集合中不存在,由

34、类的定义可知函数 boolInSet(charc)可以测试字符 c 是否在集合中,因此这里直接调用函数boolInSet(charc)即可。 (2)题目要求:添加一条语句,加入元素至集合中,集合用数组 setdata 表示,直接把元素添加到数组中即可。 (3)主要考查考生对 if 语句的掌握,题目要求:测试元素 c 是否与集合中某元素相同。前一条语句是个 for 循环,利用下标 i 遍历整个集合,通过 if 语句中的判断条件判断 c是否在集合中,用“=”判断。 (4)主要考查考生对成员函数的掌握,先看函数的注释:判断一个字符 c是否在集合中,若在,返回 true,否则返回 false。if 语

35、句成立时,说明字符 c 存在于集合中,因此应该返回 true。四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj3 下的工程 proj3,其中声明的 IntSet 是一个用于表示正整数集合的类。IntSet 的成员函数 Merge 的功能是求当前集合与另一个集合的并集,在 Merge中可以使用成员函数 IsMemberOf 判断_个正整数是否在集合中。请完成成员函数 Mellge。在 main 函数中给出了一组测试数据,此时程序的输出应该是:求并集前:123581028911305667 求并集后:1235810289113056671

36、235810911305667 要求:补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件outdat 中。输出函数 writeToFile 已经编译为 obj 文件,并且在本程序中调用。Intseth#includeiostreamusingnamespacestd;constintMax=100;classIntSetpublic:IntSet()构造一个空集合end=-1;IntSet(inta,intsize)构造一个包含数组 a 中 size 个元素的集合if(Size=Max)end=Max-;elseend=size-1;f

37、or(inti=0;i=end;i+)elementi=ai;boolIsMemberOf(inta)判断 a 是否为集合中的元素for(inti=0;i=end;i+)if(elementi:=a)returntrue;returnfalse;intGetEnd()returnend;)返回最后一个元素的下标intGetElement(inti)returnelementi;返回下标 i 处的元素 IntSetMerge(IntSet i = end; i+) ai = elementi; size+; for (int k = 0; k = set.GetEnd(); k+) if (!IsMemberOf(set.GetElement(k) asize+ = set.GetElement(k);)解析:解析:主要考查考生对数组的掌握情况,题目要求计算集合的并集,定义一个新集合 a,先复制一个数组的元素,再判断另一个数组中的元素,只要元素不重复就添加到集合 a 中。

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