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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C+机试(操作题)模拟试卷 494及答案与解析 一、基本操作题 1 请打开考生文件夹下的解决方案文件 proj1,其中有枚举 DOGCOLOR、狗类Dog和主函数 main的定义。程序中位于每个 “ ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: There is a white dog named Hobo There is a black dog named Haha There is a morley dog named Hihi 注意: 只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include i

2、ostream using namespace std: 狗的颜色:黑、白、黄、褐、花、其他 enum DOGCOLORBLACK, WHITE, YELLOW, BROWN, PIEBALD,OTHER; class Dog狗类 DOGCOLOR color; char name20; staticint count; public: Dog(char name , DOGCOLORcolor) strcpy(this- name, name); ERROR*found* strcpy(this- color, color); DOGCOLOR getColor( )constreturn

3、color; ERROR*found* const char*get: Name( )constreturn*name; const char*getColorString( )const switch(color) case BLACK: return“black“; case WHITE: return“white“; case YELLOW: return“yellow“; case BROWN: return“brown“; case PTEBALD: return“piebald“; return“motley“; void show( )const cout “There is a

4、“ getColorString( ) “dog named“ name endl; ; int main( ) ERROR*found* Dog dog1(“Hoho“, NHTTE), dog2(“Haha“, BLACK); dog3(“Hihi“, OTHER); dog1 show( ); dog2 show( ); dog3 show( ); return0; 二、简单应用题 2 请打开考生文件夹下的解决方案文件 proj2,其中有两个类:一是销售类 (sale),用于表示按照一件商品的基本价格进行销售;另一个是打折销售类 (DiscountSale),用于表示在基本价格基础上按一

5、个 折扣比例进行销售。 DiscountSale类继承了 sale类。类的主要数据成员的含义和成员函数的功能要求在程序注释中有说明。请在程序中的横线处填写适当的代码,然后删除横线,完成程序的功能。此程序的正确输出结果应为: Discount item is cheaper Saving is0 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容。 #include iostream using namespace std; Class Sale public: Sale( );默认构造函数, 将 price初始化为 0 Sale(double the_price);构造函数,用 t

6、he_price初始化 price virtual double bill( )const;返回当前商品的价格 (基本价 ) double savings(const Sale&other)const;返回参数 other所引用的对象比当前对象便宜的差价 protected: double price;商品的基本价格 (不打折的价格 ) ; Sale: Sale( ): price(0) Sale: Sale(double the_price): price(the_price) double Sale: bill( )const return price; double Sale: savi

7、ngs(constSale&other)const ERROR*found* _;返回当前对 象价格比 other贵多少的差价 class DiscountSale: publicSale打折销售类继承销售类 public: DiscountSale( );默认构 造函数,将 discount初始化为 0 miscountSale(double the_price, double the_discount;构造函数, theprice是基本价格; the_discount是折扣百分比 virtual double bill( )const;返回本商品销售价格 (即打折以后的实际售价,覆盖了基类

8、的 bill函数 ) protected: double discount;折扣百分比。例如降价至原价的 70,此成员值应为 70 ; DiscountSale: DiscountSale( ): discount(0) DiscountSale: DiScountSale(double the_price, double the_diScount) : Sale(the price), discount(the_discount) double DiscountSale: bill( )const double fraction=discount 100; *found* _;返回本对象 打

9、折以后的实际售价 bool operator (const Sale&first, const Sale&Second) *found* _;判断是否 first价格低于 second价格 int main( ) Sale Simple(10 00); miScOuntSale discount(11 00, 90); if(discount simple) cout “Discount item is cheaper n“; *found* 这里输出购买 discount比购买 simple节省多少钱 cout “Saving is“ _ endl; else cout “DiScount

10、item isnot cheaper n“; return0; 三、综合应用题 3 请打开考生文件夹下的解决方案文件 proj3,此工程中包含一个源程序文件proj3 cpp,其功能是从文本文件 in dat中读取全部整数,将整数序列存放到intArray类的对象中,然后建立另一对象 myAay,将对象内容赋值给 myArray。类 intArray重载了 “=”运算符。程序中给出了一个测试数据文件 input,不超过 300个的整数。程序的输出是: 10 11 13 16 20 要求: 补充编制的内容写在 “ *333*”与 “*666*”之间。实现重载赋值运算符函数,并将赋值结果在屏幕输出

11、。格式不限。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数 writeToFile已经编译为obj文件,并且在本程序中调用。 intArray h class intArray private: int*array; int length; public: intArray(char*filename); intArray( ); intArray&operator=(constintArray&src); intArray( ); void Show( ); ; void writeToFile(const char*path); main cpp #i

12、nclude iostream #include fstream #include cstring #include“intArray h“ using namespace std; intArray: intArray( ) length=10; array=new intlength; intArray: intArray(char*filename) ifstream myFile(filename); array=new int300; length=0; while(myFile arraylength+) length-; myFile close( ); intArray&int

13、Array: operator=(const intArray&Src) if(array!=NULL)delete array; length=src length; array=new intlength; *333* *666* return*this; intArray: intArray( ) delete array; void intArray: show( ) int step=0; for(inti=0; i length; i=i+step) cout arrayi endl; step+; void main( ) intArray*arrayP=new intArray

14、(“input dat“); intArray myArray; myArray=*arrayP; (*arrayP) show( ); delete arrayP; writeToFile(“ “); 国家二级 C+机试(操作题)模拟试卷 494答案与解析 一、基本操作题 1 【正确答案】 (1)this- color=color; (2)const char getName( )constreturn*name; (3)Dog dogl(“Hoho“, WHITE), dog2(“Haha“, BLACK), dog3(“Hihi“, OTHER); 【试题解析】 (1)主要考查考生对 s

15、trcpy函数的掌握,如果看到上一条语句strcpy(this- name, name);,就以为本条语句 也要用 strcpy函数来赋值,这是错误的。 SIrcpy函数只能复制字符串,根据类的私有成员声明可知, color是DOGCOLOR型的,这里直接使用赋值语句 “=”即可。 (2)主要考查考生对函数返回值的掌握,先解读语句 const chax*get Name( )constreturn*name; ,要返回的是一个 const的字符指针,同时函数内的值不能改变, name在类的私有成员声明中是个字符数组, *name代表字符数组而不是字符指针,问题就出来了,需要修改返回类型: co

16、nst char getName( )constreturn*name; 。 (3)语法错误,定义变量时,变量之间应使用 “, ”分开。 二、简单应用题 2 【正确答案】 (1)return this- bill( )-other bill( ) (2)return fraction*price (3)return first bill( ) second bill( ) bill( )是返回商品的实际价格 (4)simple savings(discount) 【试题解析】 Sale类有一个数据成员:保护成员 price,表示商 品的价格;两个构造函数:默认构造函数 Sale( )将类成员

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

18、e类对象 simple和 DiscountSale类对象discount,其中 simple对象的 price被赋值为 10 00; discount对象的 price被赋值为 11 00,成员 discount被赋值为 90,即折扣为 90 (1)if语句的条件中,将 discount与 simple进行比较,如果 main( )主数的 discount小于 simple,那么说明 discount的实际价格比 simple价格便 宜;所以需要重载“ ”运算符,题意中重载的 “ ”运算符函数接收两个 Sale类对象的引用,通过对象的引用,比较两个对象的实际价格,所以重载 “ ”运算符函数体中

19、,若 first对象引用的商品实际价格小于 second对象引用的商品实际价格,那么函数值返回true,可知函数体中需要补充的语句如下: return first bill( ) second bill( ); bill( )是返回商品的实际价格 (2)由于 bill( )是虚函数,且重载 “ ”运算符函数的参数是引用,所以调用 bill( )函数时,使用了多态 机制,引用的对象是 Sale类对象,调用 Sale类中的 bill( )函数,引用的对象是 DiscountSale类对象,那么将调用 DiscountSale类的 bill( )函数, bill( )函数体中,需要返回的是商品的实际

20、价格,即折扣完的价格,所以需要将返回打过折的价格: DiscountSale类中, bill( )函数体中需要补充的语句如下: return fraction*price (3)savings( )函数需要计算当前对象比 other引用的对象在价格上贵多少,所以savings( )函数体中需要补充 的语句如下: return this- bill( )-other bill( ) 同样, this指针引用当前对象, other是引用对象,所以可以与 bill( )虚函数一起使用多态机制,获得当前对象和 other对象的实际价格,再进行差值计算 (4)main( )函数中,程序判断 discou

21、nt小于 simple后,输出提示信息,再调用savings( )函数输出 discount和 simple的差值,这里需要计算 discount比 simple节省多少钱,所以需要将 simple当做当前对象, discount当做参 数传人 savings( )函数,所以补充语句如下: simple savings(discount) 三、综合应用题 3 【正确答案】 for(int i=0; i length; i+)遍历对象 src中的数组 array,然后依次把值放进数组 array中 arrayi=src arrayi; 【试题解析】 主要考查考生对运算符重载的掌握,该函数要重载运算符 “=”,该运算符的意思是赋值。先看该函数的其他语句: if(array!=NULL)delete array; length=src length; array=new intlength; 第一条语句是把原来动态数组释放,第二条语句是把形参 src的成员 length赋值给变量 length,第三条语句是给指针 array分配内存。接下来要把动态数组中的值逐个赋给 array数组,在这里使用 for循环语句,循环变量 i的范围是 0 length,并进行赋值操作。

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