李爱华、程磊_面向对象程序设计课后答案(完整版)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章2-4#includeiostreamusingnamespacestd;Add(inta,intb);intmain(){intx,y,sum;coutpleaseinputxandy:;cinxy;sum=add(x,y);coutx+y=sumendl;}Add(inta,intb){returna+b;}2-5(1)thisisaC++program.(2)x=50.6y=10z=Ax=216.34y=10z=Ax=216.34y=2z=Ax=216.34y=2z=E(3)xyz500100005001500150050020015002-6#includeiostreamusingnamespacestd;intmain(){int*p,*init;intcountp=0;intcountn=0;p=newint[20];init=p;for(inti=0;i20;i++){cin*p;p++;}p=p-20;for(i=0;i20;i++){if(*p0)countp++;if(*p0)countn++;cout*p;p++;}cout正数有:countpendl;cout负数有:countnendl;p=init;delete[]p;return0;}2-7不做要求#includeiostream//#includestringusingnamespacestd;voidcheckagescore(stringname,intage){if(name==exit)throwname;if(age0||age50)throwage;}intmain(){stringname;intage;for(inti=0;i5;i++){cin.ignore();getline(cin,name);cinage;try{checkagescore(name,age);}catch(string){coutexception:nameisexitendl;continue;}catch(int){coutexception:ageisnotproperendl;continue;}coutname:nameage:ageendl;}return0;}第三章3-1(1)A(2)C(3)B(4)C(5)C(6)B(7)B(8)C(9)C3-7(1)main()函数中p1.age=30;语句是错误的。age是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(inta1,intb1):a(a1),b(b1){}或A(inta1):a(a1),b(a){}再将main中的Aa(1,2);改为Aa(1);(3)(1)在Test类中添加语句:voidprint();voidPrint(){coutx-y=x-yendl;}改为voidTest::Print(){coutx-y=x-yendl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)ConstructingAConstructingBDestructingBDestructingA(2)doublea,doublebpoint&pp.x3-9classbox{intlen1,len2,len3;public:box(intl1,intl2,intl3){len1=l1;len2=l2;len3=l3;}longvolumn(){returnlen1*len2*len3;}};3-10classTest{intm1,m2;public:voidInit(inta,intb){m1=a;m2=b;}voidPring(){coutm1m2endl;}};3-11略3-12}第四章4-6(1)D(2)D(3)D(4)D(5)B(6)D4-7(1)staticintcount=0;这样初始化静态成员值是不对的将其改为staticintcount;在类外,main函数前加intSample::count=0;(2)#includeiostream//#includecstdlibusingnamespacestd;classCtest{private:intx;constinty1;public:constinty2;Ctest(inti1,inti2):y1(i1),y2(i2){y1=10;//y1为常量不能赋值x=y1;}intreadme()const;};intCtest::readme()const{inti;i=x;x++;//常函数内不能改变成员值returnx;}intmain(){Ctestc(2,8);inti=c.y2;c.y2=i;//y2为常量,不能改值i=c.y1;//y1私有,类外不能访问return0;}将出错语句全部注释4-8(1)题中印刷错误,将classC构造函数改为:C(){coutconstructorC:;}运行结果为:constructorAconstructorBconstructorC(2)40(3)3434-9#includeiostream.h#includestdio.hclassDate{intyear;intmonth;intday;public:Date(inty,intm,intd){year=y;month=m;day=d;}voiddisp(){coutyearmonthdayendl;}friendintcount_day(Date&d,intk);friendintl(intyear);friendinth(Date&d1,Date&d2);};intcount_day(Date&d,intk){staticintday_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};//使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年intj,i,s;if(l(d.year))j=1;//闰年,取1elsej=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;id.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1;i=12;i++)s+=day_tab[j][i-1];}returns;//S为相差的天数}intl(intyear){if(year%4==0&&year%100!=0||year%400==0)//是闰年return1;else//不是闰年return0;}inth(Date&d1,Date&d2){intdays,day1,day2,y;if(d1.yeard2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;yd2.year;y++)if(l(y))//闰年days+=366L;else//非闰年days+=365L;days+=count_day(d2,1);}elseif(d1.year==d2.year){day1=count_day(d1,1);day2=count_day(d2,1);days=day2-day1;}elsedays=-1;returndays;}voidmain(){intyear1,year2,month1,month2,day1,day2;cout输入日期1endl;cinyear1month1day1;cout输入日期2endl;cinyear2month2day2;Dated1(year1,month1,day1),d2(year2,month2,day2);intds=h(d1,d2);{cout输出结果:endl;}if(ds=0){d1.disp();printf(与);d2.disp();printf(之间有%d天\n\n,ds);}else//第一个日期小于第二个日期cout时间错误!endl;}4-10#includeiostream.h#includestring.hclassStudent{intnumber;charname[20];public:Student(inti=0,char*s=\0)//构造学生对象{number=i;strcpy(name,s);}voidPrint()//输出结果{coutNumber:numberendl;coutName:nameendl;}friendboolgreaterthan(Student&st1,Student&st2);};boolgreaterthan(Student&st1,Student&st2){returnst1.numberst2.number;//返回成员number的比较结果}intmain(){Studentst[5]={Student(65,Li),Student(78,Zhang),Student(80,wang),Student(92,zhao),Student(50,zhen)};intmax=0;intmin=0;for(inti=1;i5;i++){if(!greaterthan(st[max],st[i]))max=i;if(!greaterthan(st[i],st[min]))min=i;}cout最大成绩:endl;st[max].Print();cout最小成绩:endl;st[min].Print();return0;}4-11#includeiostream#includestringusingnamespacestd;classBook{char*name;char*author;intsale;public:Book(){name='\0';author='\0';sale=-1;}Book(char*a,char*b,intc){name=newchar[strlen(a)+1];strcpy(name,a);author=newchar[strlen(b)+1];strcpy(author,b);sale=c;}voidprint(){coutautorauthorendl;coutnamenameendl;coutpricesaleendl;}~Book(){if(!name)delete[]name;if(!author)delete[]author;}};intmain(){Bookb1(c++,liaihua,12);Bookb2;return0;}第五章5-8改错题答案不唯一(1)classDC{intx;public:DC(){x=100;}};(2)编译无错,但逻辑错误,可改为:classBC{protected:intx;public:BC(inti=0){x=i}};classDC:privateBC{public:DC(inti):BC(i){}};(3)将DC构造函数改为:DC(inti):BC(i){y=0;}5-9(1)baseclass(2)(10,5)(3,9-18,33)(13,19)(13,19-18,33)(13,19)5-10#includeiostreamusingnamespacestd;class

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功