面向对象A面向对象习题南航皮德常资料.docx
- 文档编号:6605160
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:13
- 大小:18.11KB
面向对象A面向对象习题南航皮德常资料.docx
《面向对象A面向对象习题南航皮德常资料.docx》由会员分享,可在线阅读,更多相关《面向对象A面向对象习题南航皮德常资料.docx(13页珍藏版)》请在冰豆网上搜索。
面向对象A面向对象习题南航皮德常资料
第8章习题:
8-1、设计Date类,输出合法日期。
#include
usingnamespacestd;
12-25-2004."< : if(count>0) {length=count; fltData=newfloat[length]; }else {length=1; ; fltData=newfloat[length]; } for(inti=0;i fltData[i]=0; } # ."< delete[]fltData; length=0; } ."< % DataArrayObj(3); cout<<"给DataArray对象赋值: "< for(inti=0;i<3;i++) {5.0fetHours(tHour)) break; ) else cout<<"您输入的数据不正确,请重新输入! "< } } etPayment()<<"元"< , } 8-5、设计InvoiceItem类和商品销售类,完成如下功能: 1)询问客户购买的商品名称和数量; 2)从InvoiceItem对象获得每个商品的成本价; : 3)在成本价基础上加上30%利润,得到每个商品的单价; 4)将商品单价与购买数量相乘,得到商品小计; 5)将商品小计乘以6%,得到商品的零售税; 6)将商品小计加上零售税得到该商品的销售额; 7)显示客户本次交易购买商品的小计、零售税和销售额。 } 有效性检验: 商品数量不能为负数。 #include usingnamespacestd; classInvoiceItem {char*desc; > intunits; floatcost; public: InvoiceItem(char*d,intu=0,floatc=0) {desc=newchar[strlen(d)+1]; : strcpy(desc,d); units=u; cost=c; } ~InvoiceItem(){delete[]desc;units=0;cost=0;} % char*getDesc(){returndesc;} intgetUnits(){returnunits;} floatgetCost(){returncost;} }; classSale{ — floatprice,salesum,saletax,totalsum; intbuynum; public: boolsetnum(int,int); voidcalcSale(floatp) > {price=p;0.5f1.2f2.5fSaleetDesc()<<"\t数量: "; cout< "; cout< }etDesc(),name)==0) index=i; & if(index! =-1)break; elsecout<<"您输入的商品不存在,请重新输入! "< } cout<<"请输入购买数量: "; while(true) < {intnum; cin>>num; if(num,Inventory[index].getUnits()))break; elsecout<<"您输入的数量不正确,请重新输入! "< } , etCost()*; etDesc()< cout<<"本次购买的商品数量: "<<()< cout<<"本次购买的商品单价: "<<()<<"元"< cout<<"本次购买的商品小计: "<<()<<"元"< ^ cout<<"本次购买的零售税: "<<()<<"元"< cout<<"本次购买的销售额: "<<()<<"元"< } 第9章习题: ) 9-1、定义NumDays类,功能是将以小时(hour)为单位的工作时间转换为天数(day)。 构造函数具有一个代表工作小时的参数,其他函数成员实现小时和天的存储和检索。 同时,该类需重载+、-、++、――运算符。 9-2、设计TimeOff类,用于计算雇员生病、休假和不支付报酬的时间。 9-3、采用TimeOff类定义一个对象。 要求用户输入某雇员已经工作的月数(months),然后采用TimeOff类对象计算并显示雇员因病休假和正常休假的最多天数。 注意: 雇员每月可以有12小时的带薪休假和8小时的生病休假。 etHours()) cout<<"该月超过标准的生病休假小时数: "<<().getHours()<<"小时! \n"; : (hours); (offObj); cout<<"请输入第"< \n"; cin>>hours; if(hours>().getHours()) @ cout<<"该月超过标准的带薪休假小时数: "<<().getHours()<<"小时! \n"; (hours); (offObj); cout<<"请输入第"< \n"; cin>>hours; $ if(hours>().getHours()) cout<<"该月超过标准的不带薪休假小时数: "<<().getHours()<<"小时! \n"; (hours); (offObj); } * cout<<()<<"的休假天数统计如下: \n"; cout<<"因病休假的天数为: \t"<<().getDays()< cout<<"带薪休假的天数为: \t"<<().getDays()< cout<<"不带薪休假的天数为: \t"<<().getDays()< } \ 第10章习题: 10-2、设计Employee类,其数据成员能保存如下信息: 雇员姓名: char*指针; 雇员编号: 格式为XXX-L,X是0~9之间的数字,L是A~M之间的字母; @ 受雇日期: 向该类增加构造函数、析构函数和其他相关函数成员。 设计Employee类的子类EmployeePay,其具有如下数据成员: 月工资: double型变量; 部门号: int型变量; 【 编写完整的程序,要求用户从键盘输入雇员信息,然后在屏幕上显示这些信息。 ."< CirclemyCircle(0,0,; cout<<"centerX="<<()< cout<<"centerY="<<()< \ cout<<"radius="< cout<<"Area="<<()< ."< RectanglemyRectangle(12,15); cout<<"width="<<()< ) cout<<"length="<<()< cout<<"Area="<<()< } 10-9、编写具有排序功能的类模板SortableArray,其是FreewillArray类模板的子类,具有一个函数成员,实现对数组元素的升序排列。 编写一个完整的程序测试该模板。 ) template FreewillArray : FreewillArray(ints) { arraySize=s; … aptr=newT[s]; if(aptr==0)memError(); for(intcount=0;count *(aptr+count)=0; } 】 template FreewillArray : FreewillArray( constFreewillArray&obj) { arraySize=; ; aptr=newT[arraySize]; if(aptr==0)memError(); for(intcount=0;count *(aptr+count)=*+count); } / template FreewillArray : ~FreewillArray() {if(arraySize>0) delete[]aptr; ) } template voidFreewillArray : memError() {cout<<"ERROR: allocatememory.\n"; $ exit(0); } template voidFreewillArray : subError(void) ( {cout<<"ERROR: Subscriptoutofrange.\n"; exit(0); } template T&FreewillArray : operator[](constint&sub) @ {if(sub<0||sub>arraySize)subError(); returnaptr[sub]; } #endif ] // #include"" template classSortableArray: publicFreewillArray {public: — SortableArray(ints): FreewillArray SortableArray(FreewillArray FreewillArray voidSelectionSort(); }; template 》 voidSortableArray : SelectionSort()//选择排序 {inti,j,t,minIndex; for(i=0;i { minIndex=i; ` for(j=i+1;j if(aptr[j] minIndex=j; if(minIndex! =i) {t=aptr[minIndex]; * aptr[minIndex]=aptr[i]; aptr[i]=t; } } } ) // #include usingnamespacestd; #include"" > voidmain(void) {FreewillArray SortableArray inti,x; for(i=0;i<10;i++){ , cout<<"请输入第"< \n"; cin>>x; sortTable[i]=x; } cout<<"排序前: \n"; ¥ for(i=0;i<10;i++) cout< cout< cout<<"排序后: \n"; (); * for(i=0;i<10;i++) cout< } 第11章习题: @ 11-1、Date类异常。 #include usingnamespacestd; classDate {public: 【 boolsetDate(constint,constint,constint); voiddisplay(void); char*getMonth(constint); classInvalidDay{};//异常类 classInvalidMonth{};//异常类 ~ private: intyear;//存储日期的年份 intmonth;//存储日期的月份 intday;//存储日期的天数 }; 》 //设置成员变量 //参数: mm: 月份。 dd: 天数。 yy: 年份。 // //返回值: 如果成功赋值则返回true,否则返回false// char*Date: : getMonth(constintm) {if(m==1) * return"January"; elseif(m==2) return"February"; elseif(m==3) return"March"; ~ elseif(m==4) return"April"; elseif(m==5) return"May"; elseif(m==6) ) return"June"; elseif(m==7) return"July"; elseif(m==8) return"August"; ^ elseif(m==9) return"September"; elseif(m==10) return"October"; elseif(m==11) & return"November"; else return"December"; } //设置成员变量 //参数: mm: 月份。 dd: 天数。 yy: 年份。 // //返回值: 如果成功赋值则返回true,否则返回false// boolDate: : setDate(constintmm,constintdd,constintyy) {if(mm<1||mm>12) throwInvalidMonth();//抛出异常 if(dd<1||dd>31) throwInvalidDay();//抛出异常 year=yy; month=mm; day=dd; returntrue; } //在屏幕上显示日期// voidDate: : display(void) {//按照"12-25-2004"的形式输出日期 cout< < < //按照"December25,2004"的形式输出日期 cout< < < //按照"25December2004"的形式输出日期 cout< < < } voidmain(void) {DatemyDate;//存储日期 intyear;//临时存储年份 intmonth;//临时存储月份 intday;//临时存储天数 try { cout<<"请按YYYY格式输入年: "; cin>>year; cout<<"请按mm格式输入月: "; cin>>month; cout<<"请按dd格式输入日: "; cin>>day; (month,day,year); cout<<"您输入的日期是: "< (); cout< }catch(Date: : InvalidDay) {cout<<"您输入的日期天数错误! \n"< }catch(Date: : InvalidMonth) {cout<<"您输入的日期月份错误! \n"< } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 习题 南航皮德常 资料