欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1331838       资源大小:45.50KB        全文页数:5页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】国家二级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时停止交换即可。


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开