您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 李爱华程磊_面向对象程序设计课后答案
第二章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略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;classShape{intx,y;public:Shape(intix,intiy){x=ix;y=iy;}virtualvoidshow(){coutpos:x''yendl;}};classCircle:publicShape{intradius;public:Circle(intix,intiy,intr):Shape(ix,iy),radius(r){}voidshow(){Shape::show();coutcircle:radiusendl;}};classRect:publicShape{intwidth,higth;public:Rect(intix,intiy,intiw,intih):Shape(ix,iy),width(iw),higth(ih){}voidshow(){Shape::show();coutwidthandhigth:width''higthendl;}};intmain(){Shapes1(1,1);Rectr1(2,2,8,8);Circlec1(3,3,9);r1.show();c1.show();return0;}第六章6-4d=3D::fun();6-5C::print(),cinfo=2C::print(),cinfo=2D::print(),dinfo=4B类不能定义对象,否则编译通不过,因为B未定义基类A中的虚函数print(),它也是个虚基类。6-6#includeiostreamusingnamespacestd;classMammal{public:virtualvoidSpeak(){coutinMammalendl;}};classDog:publicMammal{public:voidSpeak(){coutdogbarkendl;}};intmain(){Dogdog;Mammal*pM;pM=&dog;pM-Speak();return0;}运行结果:dogbark6-7#includeiostreamusingnamespacestd;classBaseClass{public:virtual~BaseClass(){coutdestructBaseendl;}};classDerived:publicBaseClass{public:~Derived(){coutdestructderivedendl;}};intmain(){BaseClass*pbase;pbase=newDerived;deletepbase;}结果将不能正常执行子类析构6-8以圆形和正方形为例#includeiostreamusingnamespacestd;classShape{public:virtualfloatarea()=0;};classCircle:publicShape{intradius;public:Circle(intr):radius(r){}floatarea(){return3.14*radius*radius;}};classSquare:publicShape{intwi
本文标题:李爱华程磊_面向对象程序设计课后答案
链接地址:https://www.777doc.com/doc-2382189 .html