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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】国家二级C++机试(操作题)模拟试卷340及答案解析.doc

1、国家二级 C+机试(操作题)模拟试卷 340及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 pmjl,此工程中包含了类 Pets(“宠物”)和主函数 main的定义。程序中位于每个“ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: Name:sonny Type:dog Name:John Type:dog Name:Danny Type:eat Name:John Type:dog 注意:只修改每个“ERROR*found*”下的那一行,

2、不要改动程序中的其他内容。#includeiostreamusing namespace st:d;enllm Pets typedog,cat,bird,fish;class PetSprivate: char*name; Pets_type type;public: Pets(const char*flame=”sonny”,Pets_type type=dog); Petsoperator=(const Petss); Pets(); void show()const; ; Pets:Pets(const char*name,Pets type type) /构造函数 this-name

3、=new charstrlen(name)+1; strcpy(this 一name,name); ERROR*found* type=type; Pets:Pets()析构函数,释放 name 所指向的字符串 ERROR*found* name=0; PetsDiscountSale: DiscountSale ( ):discount(0)DiScountSale:DiscountSale(doublethe_price,double the_discount) :Sale(the_price),discount(thediscount)double DiscountSale:bill()

4、const double fraction=discount100 ; *found*_;返回本对象打折以后的实际售价bool operator(const Sale(分数:2.00)_三、综合应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中包含主程序文件maincpp 和用户定义的头文件 Arrayh,整个程序包含有类 Array的定义和主函数 main的定义。请把主程序文件中的 Array类的成员函数 Contrary()的定义补充完整,经补充后运行程序,得到的输出结果应该是: 5 8 5,4,3,2,1 0,0,

5、84,56,45,34,23,12 注意:只允许在“*333*”和“*666*”之间填写内容,不允许修改其他任何地方的内容。Arrayh#includeiostreamusing namespace std;templateclass Type,int mclass Array数组类 public: Array(Type b,int mm) 构造函数 for(int i=0;im;i+) if(imm)ai=bi;else ai=0; void Contrary();交换数组 a中前后位置对称的元素的值 int Length()constreturn m;)返回数组长度 Type operat

6、or(int i)const下标运算符重载为成员函数 if(i0 | i=m)cout“下标越界!“endl;exit(1);) return ai, private: Type am; , void writeToFile(const char*); 不用考虑此语句的作用 maincpp #include”Arrayh” 交换数组 a中前后位置对称的元素的值 templateclass Type,int m void ArrayType,m:Contrary() 补充函数体 *333* *666* int main() int sl5=1,2,3,4,5; double s26=12,23,

7、34,45,56,84); Arrayint,5dl(s1,5); Arraydouble,8d2(s2,6); int i; d1Contrary(); d2Contrary(); coutd1Length()“d2Length()end1; for(i=0;i4;i+) coutd1i”,”; coutd14end1; for(i=0;i7;i+) coutd2i”,”; coutd27end1; writeToFile(”);不用考虑此语句的作用 return 0;(分数:2.00)_国家二级 C+机试(操作题)模拟试卷 340答案解析(总分:6.00,做题时间:90 分钟)一、基本操作

8、题(总题数:1,分数:2.00)1.请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 pmjl,此工程中包含了类 Pets(“宠物”)和主函数 main的定义。程序中位于每个“ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: Name:sonny Type:dog Name:John Type:dog Name:Danny Type:eat Name:John Type:dog 注意:只修改每个“ERROR*found*”下的那一行,不要改动程序中的其他内容。#includeiostreamusing namespace st:d;enl

9、lm Pets typedog,cat,bird,fish;class PetSprivate: char*name; Pets_type type;public: Pets(const char*flame=”sonny”,Pets_type type=dog); Petsoperator=(const Petss); Pets(); void show()const; ; Pets:Pets(const char*name,Pets type type) /构造函数 this-name=new charstrlen(name)+1; strcpy(this 一name,name); ERR

10、OR*found* type=type; Pets:Pets()析构函数,释放 name 所指向的字符串 ERROR*found* name=0; PetsDiscountSale: DiscountSale ( ):discount(0)DiScountSale:DiscountSale(doublethe_price,double the_discount) :Sale(the_price),discount(thediscount)double DiscountSale:bill()const double fraction=discount100 ; *found*_;返回本对象打折以

11、后的实际售价bool operator(const Sale(分数:2.00)_正确答案:(正确答案:(1)return this-bill()-otherbill() (2)return fraction*price (3)return firstbill()secondbill() bill()是返回商品的实际价格 (4)simplesavings(discount)解析:解析:Sale 类有一个数据成员:保护成员 price,表示商品的价格;两个构造函数:默认构造函数SMe()将类成员 price初始化为 0,构造函数 Sale(double the_price)将成员 price初始化

12、为the_price;两个成员函数:bill()函数是一个虚函数,返回 price的值;savings()函数返回参数 other所引用的对象比当前对象便宜的差价 DiscountSale 类继承 Sale类,它有两个数据成员:保护成员 price继承于 Sale类,表示商品价格,保护成员 discount表示商品折扣百分比;两个成员函数:savings()函数继承于 Sale类;bill()函数继承 Sale类并被改写。 main()函数中,首先构造两个类对象:Sale 类对象 simple和 DiscountSale类对象 discount,其中 simple对象的 price被赋值为 1

13、000;discount 对象的 price被赋值为 1100,成员 discount被赋值为 90,即折扣为 90 (1)if 语句的条件中,将discount与 simple进行比较,如果 main()主数的 discount小于 simple,那么说明 discount的实际价格比 simple价格便宜;所以需要重载“”运算符,题意中重载的“”运算符函数接收两个 Sale类对象的引用,通过对象的引用,比较两个对象的实际价格,所以重载“”运算符函数体中,若 first对象引用的商品实际价格小于 second对象引用的商品实际价格,那么函数值返回 true,可知函数体中需要补充的语句如下:

14、return firstbill()secondbill();bill()是返回商品的实际价格 (2)由于bill()是虚函数,且重载“”运算符函数的参数是引用,所以调用 bill()函数时,使用了多态机制,引用的对象是 Sale类对象,调用 Sale类中的 bill()函数,引用的对象是 DiscountSale类对象,那么将调用 DiscountSale类的 bill()函数,bill()函数体中,需要返回的是商品的实际价格,即折扣完的价格,所以需要将返回打过折的价格:DiscountSale 类中,bill()函数体中需要补充的语句如下: return fraction*price (3

15、)savings()函数需要计算当前对象比 other。引用的对象在价格上贵多少,所以savings()函数体中需要补充的语句如下: return this-bill()一 otherbill() 同样,this 指针引用当前对象,other 是引用对象,所以可以与 bill()虚函数一起使用多态机制,获得当前对象和 other对象的实际价格,再进行差值计算 (4)main()函数中,程序判断 discount小于 simple后,输出提示信息,再调用 savings()函数输出 discount和 simple的差值,这里需要计算 discount比 simple节省多少钱,所以需要将 si

16、mple当做当前对象,discount 当做参数传人 savings()函数,所以补充语句如下: simplesavings(discount)三、综合应用题(总题数:1,分数:2.00)3.请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中包含主程序文件maincpp 和用户定义的头文件 Arrayh,整个程序包含有类 Array的定义和主函数 main的定义。请把主程序文件中的 Array类的成员函数 Contrary()的定义补充完整,经补充后运行程序,得到的输出结果应该是: 5 8 5,4,3,2,1 0,0,84,56,45,34,23,12 注意:

17、只允许在“*333*”和“*666*”之间填写内容,不允许修改其他任何地方的内容。Arrayh#includeiostreamusing namespace std;templateclass Type,int mclass Array数组类 public: Array(Type b,int mm) 构造函数 for(int i=0;im;i+) if(imm)ai=bi;else ai=0; void Contrary();交换数组 a中前后位置对称的元素的值 int Length()constreturn m;)返回数组长度 Type operator(int i)const下标运算符重载

18、为成员函数 if(i0 | i=m)cout“下标越界!“endl;exit(1);) return ai, private: Type am; , void writeToFile(const char*); 不用考虑此语句的作用 maincpp #include”Arrayh” 交换数组 a中前后位置对称的元素的值 templateclass Type,int m void ArrayType,m:Contrary() 补充函数体 *333* *666* int main() int sl5=1,2,3,4,5; double s26=12,23,34,45,56,84); Arrayin

19、t,5dl(s1,5); Arraydouble,8d2(s2,6); int i; d1Contrary(); d2Contrary(); coutd1Length()“d2Length()end1; for(i=0;i4;i+) coutd1i”,”; coutd14end1; for(i=0;i7;i+) coutd2i”,”; coutd27end1; writeToFile(”);不用考虑此语句的作用 return 0;(分数:2.00)_正确答案:(正确答案:for(int i=0,j =m 一 1;ij;i+, j-) i 从 0开始自加,j 从数组最一位开始自减,条件是 ij,开始遍历数组 a Type temp=a i ; 把 ai赋值给变量 temp ai=aj; 把 aj赋值给j aj=temp; 把 temp赋值给 aj,最终使 ai与 aj值的互换 )解析:解析:主要考查考生对交换算法的掌握情况,根据题目对要完成的函数 Contrary的要求:交换数组 a中前后位置对称的元素的值。这里取下标 i=0,即为数组中的第一个元素,j=m 一 1,即为数组中的最后一个元素,利用中间值 temp交换元素的值,然后 i逐次递增的同时 j逐次递减,再交换,循环到ij时停止交换即可。

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