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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级(C+)机试-试卷 7-2 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.数据流图中带有箭头的线段表示的是( )。(分数:2.00)A.控制流B.事件驱动C.模块调用D.数据流2.将前缀运算符“-“重载为非成员函数,下列原型中能正确用于类中说明的是( )。(分数:2.00)A.DecrB.Decroperator-(DecrC.friendDecrD.friendDecroperator-(Decr3.有如下程序: #include using namespace std; class Base public: Base(int x

2、=0) coutTabs(Tx);18.要定义整型数组 x,使之包括初值为 1 的三个元素,下列语句正确的是(分数:2.00)A.staticintx3=1;B.intx3;x1=x2=x3=1;C.intx3=1,1,1;D.intx=1,1,1;19.有如下类定义: class Base int l; public: int m; private: int n; ; class Derived: public Base;则类 Derived 所拥有的数据成员的个数是(分数:2.00)A.0B.1C.2D.320.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软

3、件的是( )。(分数:2.00)A.编译程序B.操作系统C.教务管理系统D.汇编程序21.有如下函数定义:void func(int a, int b+; 若执行代码段:int x = 0, y = 1;func(x, y);则变量 x 和 y 的值分别是( )。(分数:2.00)A.0 和 1B.1 和 1C.0 和 2D.1 和 222.下列有关模板的叙述中,正确的是( )。(分数:2.00)A.函数模板不能含有常规形参B.函数模板的一个实例就是一个函数定义C.类模板的成员函数不能是模板函数D.用类模板定义对象时,绝对不能省略模板实参23.有如下程序段: int i=1; while(1)

4、 i+; if(i = 100) break; if(i%2 = 0) cout Tabs(Tx);解析:解析:选项 B 中类型形参 T 前需要有关键字 class 或 typename 修饰;选项 C 中函数 ads 需要返回值;选项 D 中形参表不能为空;答案为 A。18.要定义整型数组 x,使之包括初值为 1 的三个元素,下列语句正确的是(分数:2.00)A.staticintx3=1;B.intx3;x1=x2=x3=1;C.intx3=1,1,1; D.intx=1,1,1;解析:解析:选项 A 中,数组 x 的后两个元素初值默认为 0;选项 B 中,数组下标从 0 开始,x0未赋初

5、值,x3访问越界;选项 D 中,x 是整型变量,不是整型数组,赋值语法错误;只有 C 正确,定义整型数组 x,并对三个元素赋初值为 1;答案为 C。19.有如下类定义: class Base int l; public: int m; private: int n; ; class Derived: public Base;则类 Derived 所拥有的数据成员的个数是(分数:2.00)A.0B.1C.2D.3 解析:解析:C+中派生类拥有基类的所有成员,所以 Derived 类中数据成员分别是:l、m、n,答案为D。20.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属

6、于应用软件的是( )。(分数:2.00)A.编译程序B.操作系统C.教务管理系统 D.汇编程序解析:解析:编译软件、操作系统、汇编程序都属于系统软件,只有 C)教务管理系统才是应用软件。21.有如下函数定义:void func(int a, int b+; 若执行代码段:int x = 0, y = 1;func(x, y);则变量 x 和 y 的值分别是( )。(分数:2.00)A.0 和 1B.1 和 1C.0 和 2 D.1 和 2解析:解析:函数参数的 3 种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。本题中实参 x 为传值方式,所以 x 的值不会改变;y 为

7、引用形参,所以会改变。故本题答案为C。22.下列有关模板的叙述中,正确的是( )。(分数:2.00)A.函数模板不能含有常规形参B.函数模板的一个实例就是一个函数定义 C.类模板的成员函数不能是模板函数D.用类模板定义对象时,绝对不能省略模板实参解析:解析:本题考查函数模板和类模板的基础知识,所以本题答案为 B。23.有如下程序段: int i=1; while(1) i+; if(i = 100) break; if(i%2 = 0) cout *; 执行这个程序段输出字符 * 的个数是(分数:2.00)A.100B.48C.49 D.50解析:解析:本题中 while 循环中当 i 为偶数

8、时输出*,而 i 为 100 时跳出循环,所以输出 49 个*,答案为 C。24.已知 TV 是一个类,并有函数 func 定义如下: void func() TV li,*net2,company3; 则在调用func() 后,TV 类的析构函数被调用的次数是(分数:2.00)A.2 次B.3 次C.4 次 D.6 次解析:解析:本题考查默认析构函数,题中定义了对象、包含三个元素的一维对象数组,所以析构函数执行 4 次,而对象指针数组并没有实际占用空间,所以不执行析构函数。25.下面对对象概念描述正确的是(分数:2.00)A.对象间的通信靠消息传递 B.对象是名字和方法的封装体C.任何对象必

9、须有继承性D.对象的多态性是指一个对象有多个操作解析:解析:对象之间进行通信的构造叫做消息,A 正确。多态性是指同一个操作可以是不同对象的行为,D 错误。对象不一定必须有继承性,C 错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作,B 错误。26.下列关于重载运算符的说法正确的是:(分数:2.00)A.运算符:不能被重载,运算符.必须作为类成员重载B.运算符不能被重载,运算符=必须作为类成员重载C.运算符*不能被重载,运算符()必须作为类成员重载D.运算符.不能被重载,运算符必须作为类成员重载 解析:解析:本题考查运算符重载,不能重载的运算符只有 5

10、 个:.、.*、:、sizeof、?:。C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数,只有 D 选项正确。27.下列关于模板的表述中,错误的是(分数:2.00)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字 typename 声明 解析:解析:模板形参由关键字 typename 或者 class 声明,所以 D 选项错误。28.已知有数组定义 char a34;下列表达式中正确的是(分数:2.00)A.a0=“AAA“B.strcpy(a1,“BBBBB“)C.a21=“CC“

11、D.a11=a11 解析:解析:程序定义一个 3 行 4 列的二维字符数组。由于是二维数组,所以 a0代表一维数组,数组是不能直接赋值的,A 错误;由于是二维数组,a1代表数组 a 的第二行行地址,可以使用 strcpy 函数赋值,但是 a1只有 4 个字节大小的空间,而字符串“BBBBB“占 6 个字节,拷贝越界,B 错误;同 B 情况一样,a21只有 1 个字节空间,“CC“占 3 个字节,无法完成赋值,C 错误;D 选项是对 a11完成自我赋值,正确;答案为 D。29.有如下类声明: class Fin public: Fin(); / Fin *pf; / Fin f; / Fin /

12、 ; 在标有数字的四个成员声明中,将产生编译错误的是(分数:2.00)A.B.C. D.解析:解析:只有当类定义体完成之后才能定义类,题目中四个声明语句位置,Fin 类未定义完整,属于不完全类型,此时数据成员只能是指向该类类型的指针或引用,而不能是该类的对象;语句 3 会产生编译错误;答案为 C。30.有如下程序段: int i=100; while ( int i=10 ) cout*; i-; 运行时输出“*“的个数是(分数:2.00)A.0B.100C.10D.无穷 解析:解析:首先,程序定义了局部变量 i 并初始化为 100,在 while 循环中定义了同名局部变量 i 并初始化为 1

13、0,由变量的作用域可知 while 循环中的 i 屏蔽了 while 语句前的局部变量 i,所以 while 循环体中的 i 初值为 10;其次,由于 while 循环的循环条件为 inti=10,每次循环都是重新定义并初始化 i,条件始终为真,所以 while 循环将会无限执行下去,输出无穷个“*“。答案为 D。31.除了显式定义的构造函数外,类中还有可能包含编译器自动生成的构造函数,因此一个类所拥有的构造函数的至少有(分数:2.00)A.1 个 B.2 个C.3 个D.4 个解析:解析:一个类,如果没有显示定义的构造函数,那么编译器自动生成一个构造函数;一个类,如果显示定义了构造函数,无论

14、个数多少,编译器也不会再生成任何构造函数,所以一个类所拥有的构造函数至少有 1 个,答案为 A。32.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.可行性分析报告B.软件需求规格说明书 C.概要设计说明书D.集成测试计划解析:解析:A)错误,可行性分析阶段产生可行性分析报告。C)错误,概要设计说明书是总体设计阶段产生的文档。D)错误,集成测试计划是在概要设计阶段编写的文档。B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。33.有如下程序: #include using namespace std; int main() void function(

15、double val); double val; function(val); coutA.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析:本题考查函数调用及传值方式传递参数,执行函数 function 时,并没有将 3 的值传回来,而 val 又没有初始化,所以会输出一个不确定的值,D 选项正确。34.在 C+中,cin 是一个( )。(分数:2.00)A.类B.对象 C.模板D.函数解析:解析:本题考查流对象 cin,属于基础知识,cin 是输入流对象,负责从键盘获取数据,然后送到内存。本题答案为 B。35.已知函数 FA 调用函数 FB,若要把这两个函数

16、定义在同一个文件中,则( )。(分数:2.00)A.FA 必须定义在 FB 之前B.FB 必须定义在 FA 之前C.若 FA 定义在 FB 之后,则 FA 的原型必须出现在 FB 的定义之前D.若 FB 定义在 FA 之后,则 FB 的原型必须出现在 FA 的定义之前 解析:解析:如果使用用户自己定义的函数,而该函数与调用它的函数(即主调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用此函数之前对被调用的函数作声明。36.有如下类定义: class Vechicle /基类 public: Vechicle(string s):name(s) protected: string

17、name; ; _ /Vechicle 的派生类 public: Bicycle(string name):Vechicle(name) ;横线处缺失部分为(分数:2.00)A.classVechicle:publicBicycleB.classBicycle:classVechicleC.classBicycle:publicVechicle D.classBicycle:publicclassVechicle解析:解析:本题考查如何定义派生类以及派生类对基类成员的访问,声明派生类的一般形式为:class派生类名:继承方式基类名题目中只有公用继承才能使用基类中 name 成员,所以 C 选项

18、正确。37.下列枚举类型的定义中,包含枚举值 3 的是(分数:2.00)A.enumtestLEFT,UP,RIGHT,DOWN; B.enumtestLEFT,UP=5,RIGHT,DOWN;C.enumtestLEFT=-1,UP,RIGHT,DOWN;D.enumtestLEFT,UP,RIGHT=6,DOWN;解析:解析:枚举常量的定义 enum 枚举类型名常量 1,常量 2,常量 3,.;A 选项包含的枚举值为 0、1、2、3,B 选项包含的枚举值为 4、5、6、7,C 选项包含的枚举值为-1、0、1、2,D 选项包含的枚举值为 4、5、6、7,所以 A 选项正确。38.已知 Bag

19、 是一个类,并有函数 FBag 定义如下: Void FBag() Bag *ptr, my, colleage2, 则在调用函数 FBag()后,Bag 类的析构函数被调用的次数是(分数:2.00)A.2 次B.3 次 C.4 次D.5 次解析:解析:本题考查默认析构函数,题中定义了一个对象、包含 2 个元素的一维对象数组,所以析构函数执行 3 次,而对象指针数组并没有实际占用空间,所以不执行析构函数。39.下列符号中能够作为 C+标识符的是(分数:2.00)A.Class B.gpa4.0C.1481quanzhanD.-score解析:解析:用来表示变量、符号常量、函数、数组类型等实体名

20、字的有效字符序列称为标识符,标识符由字母、数字、和下划线 3 种字符组成,且第一个字符必须为字母或者下划线,只有 A 选项正确。40.在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是(分数:2.00)A.圆括号B.中括号C.尖括号 D.花括号解析:解析:定义类模板时,模板形参表同样使用尖括号括起来,答案为 C。二、基本操作题(总题数:1,分数:2.00)41.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj1 下的工程 proj1,此工程中含有一个源程序文件 proj1cpp。其中每个注释“ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输

21、出结果为:ConstructorThevalueis10Destructor 注意:只修改注释“ERROR*found*”的下一行语句,不要改动程序中的其他内容。proj1cpp#includeiostreamusingnamespacestd;classMyClasspublic:MyClass(intx):value(x)(cout“Constructor“end1;)ERROR*found*voidMyClass()cout“Destructor“end1;)voidPrint()const;private:ERROR*found*intvalue=0;ERROR*found*voidM

22、yClass:Print()cout“Thevalueis“valueend1;intmain()MyClassobject(10);objectprint();return0;(分数:2.00)_正确答案:(正确答案:(1)MyClass() (2)int value; (3)void MyClass:Print() const)解析:解析:(1)主要考查考生对析构函数定义的掌握,析构函数前不能有任何类型,因此应将 void 去掉。 (2)value 是类的私有成员,私有成员只能声明不能定义初始值。 (3)主要考查考生对成员函数的掌握,由类的定义中关于函数的声明 void Print() c

23、onst,可知在函数定义时应加上 const。三、简单应用题(总题数:1,分数:2.00)42.请使用 VC6 或使用【答题】菜单打开考生文件夹 proj2 下 的工程 proj2。此工程中包含一个源程序文件 mainepp,其中有“房间”类 Room 及其派生出的“办公室”类 Office 的定义,还有主函数 main 的定义。请在程序中“*found*”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:办公室房间号:308 办公室长度:56 办公室宽度:48 办公室面积:2688 办公室所属部门:会计科注意:只能在横线处填写适当的代码,不要改动程序中的其他内容

24、,也不要删除或移动“*found*”。#include10streamusingnamespacestd;classRoom“房间”类 introomno;房间号doublelength;房间长度(m)doublewidth;房间宽度(m)public:Room(intthe_room_no,doublethe_length,doublethe_width):room_no(the_room_no),length(the_length),width(the_width)inttheRoomNo()constreturnroom_no;返回房间号doubletheLength()constret

25、urnlength;返回房间长度 doubletheWidth()constreturnwidth;返回房间宽度*found*doubletheArea()const_)返回房间面积(矩形面积),classOffice:publicRoom“办公室”类 char*depart;所属部门public:Office(intthe_room_no,doublethe_length,doublethe_width,constchar*thedepart)*found*:_depart:newcharstrlen(thedepart)+1;*found*strcpy(_);Office()deleted

26、epart;constchar*theDepartment()constreturndepart;返回所属部门;intmain()*found*Office_;cout“办公室房问号:“anofficetheRoomNo()end1“办公室长度:“an_officetheLength()end1-办公室宽度:“an_officetheWidth()end1“办公室面积:“an_officetheArea()end1“办公室所属部门:“an_officetheDepartment()end1;return0;(分数:2.00)_正确答案:(正确答案:(1)returnlength*width;

27、(2)Room(theroom_no,the_length,the_width) (3)depart,the_depayt (4)an_offce(308,56,48,“会计科“)解析:解析:(1)主要考查考生对成员函数的掌握,题目要求返回房间面积(矩形面积)。由此可知空格部分要填写的是一个 return 语句,返回房间面积,也就是 length*width,因此可以得 出程序returnlength*width;。 (2)主要考查考生对派生类的构造函数的掌握,派生类的构造函数要使用成员列表初始法先对基类进行初始化。 (3)考查 strcpy 函数,由前一条语句depart=newcharst

28、rlen(the_depart)+1;可知,程序给 depart 分配了长度为 the_depart 串长加 1 的空间,因此要复制字符串 the_depart 串到 depart,直接填写 strcpy(depart,the_depart)即可。 (4)主要考查考生对类的掌握,题目要求输出的结果为: 办公室房间号:308 办公室长度:56 办公室宽度:48 办公室面积:2688 办公室所属部门:会计科 由 Office 类的构造函数可知要定义的一个 Office类的对象为 an_office(308,56,48,“会计科“)。四、综合应用题(总题数:1,分数:2.00)43.请使用 VC6

29、或使用【答题】菜单打开考生文件夹 proj3 下的工程文件 proj3。本题创建一个小型字符串类,字符串长度不超过 100。程序文件包括 proj3hproj3cpp、writeToFileobj。补充完成proj3h,重载复合赋值运算符+=。要求:补充编制的内容写在“*333*”与“*666*”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件outdat 中。输出函数 writeToFih 已经编译为 obj 文件,并且在本程序中调用。proj3h#includeiostream#includeiomanipusingnamespacestd;classMiniStringpublic:friendostream strcpy(pt, sPtr); int blength = length; length += s.length; delete sPtr; sPtr = new charlength+1; strcpy(sPtr,pt); delete pt; for (int i = 0; i length; +i) sPtrblength+i = s.sPtri; return *this; )解析:解析:主要考查考生对运算符重载的掌握,因为有动态数组,所以要使用 new 语句来重新分配空间。

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