第11章谭浩强C++习题及解答(课堂PPT)_第1页
第11章谭浩强C++习题及解答(课堂PPT)_第2页
第11章谭浩强C++习题及解答(课堂PPT)_第3页
第11章谭浩强C++习题及解答(课堂PPT)_第4页
第11章谭浩强C++习题及解答(课堂PPT)_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题1.将例11.1的程序片段补充和改写成一个完整、正确的程序,用公有继承方式。在程序中应包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。,1,#include#includeusingnamespacestd;classStudentpublic:voidget_value()coutnumnamesex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexaddr;voiddisplay_1()display();coutage:ageendl;coutaddress:addrnamesex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexaddr;voiddisplay_1()display();coutage:ageendl;coutaddress:addrnamesex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexnamesexageaddr;voiddisplay_1()display();coutage:ageendl;coutaddress:addrnamesex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexaddr;voiddisplay_1()coutage:ageendl;coutaddress:addrnamesex;voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexnamesexageaddr;voiddisplay_1()display();coutage:ageendl;coutaddress:addrendl;private:intage;stringaddr;,18,intmain()Student1stud;stud.get_value1();stud.display_1();return0;,19,5.有以下程序结构,请分析访问属性。classA/A为基类public:voidf1();inti;protected:voidf2();intj;private:intk;,20,classB:publicA/B为A的公用派生类public:voidf3();protected:intm;private:intn;,21,classC:publicB/C为B的公用派生类public:voidf4();private:intp;intmain()Aa1;/a1是基类A的对象Bb1;/b1是派生类B的对象Cc1;/c1是派生类C的对象return0;,22,问:(1)在main函数中能否用b1.i,b1.j和b1.k引用派生类B对象b1中基类A的成员?(2)派生类B中的成员函数能否调用基类A中的成员函数f1和f2?(3)派生类B中的成员函数能否引用基类A中的数据成员i,j,k?,23,(4)能否在main函数中用c1.i,c1.j,c1.k,c1.m,c1.n,c1.p引用基类A的成员i,j,k,派生类B的成员m,n,以及派生类C的成员p?(5)能否在main函数中用c1.f1(),c1.f2(),c1.f3()和c1.f4()调用f1,f2,f3,f4成员函数?(6)派生类C的成员函数f4能否调用基类A中的成员函数f1,f2和派生类中的成员函数f3?,24,6.有以下程序结构,请分析所有成员在各类的范围内的访问权限。classApublic:voidf1();protected:voidf2();private:inti;,25,classB:publicApublic:voidf3();intk;private:intm;classC:protectedBpublic:voidf4();protected:intm;private:intn;,26,classD:privateCpublic:voidf5();protected:intp;private:intq;intmain()Aa1;Bb1;Cc1;Dd1;,27,7.有以下程序,请完成下面工作:阅读程序,写出运行时输出的结果。然后上机运行,验证结果是否正确。分析程序执行过程,尤其是调用构造函数的过程。,28,#includeusingnamespacestd;classApublic:/A()a=0;b=0;/A(inti)a=i;b=0;A(inti=0,intj=0)a=i;b=j;voiddisplay()couta=ab=b;private:inta,b;,29,classB:publicApublic:/B()c=0;/B(inti):A(i)c=0;/B(inti,intj):A(i,j)c=0;B(inti=0,intj=0,intk=0):A(i,j)c=k;voiddisplay1()display();coutc=cendl;private:intc;,30,intmain()Bb1;Bb2(1);Bb3(1,3);Bb4(1,3,5);b1.display1();b2.display1();b3.display1();b4.display1();return0;,31,运行结果如下:a=0b=0c=0a=1b=0c=0a=1b=3c=0a=1b=3c=5,32,8.有以下程序,请完成下面工作:阅读程序,写出运行时输出的结果。然后上机运行,验证结果是否正确。分析程序执行过程,尤其是调用构造函数和析构函数的过程。,33,#includeusingnamespacestd;classApublic:A()coutconstructingAendl;A()coutdestructingAendl;,34,classB:publicApublic:B()coutconstructingBendl;B()coutdestructingBendl;classC:publicBpublic:C()coutconstructingCendl;C()coutdestructingCendl;intmain()Cc1;return0;,35,运行结果如下:constructingAconstructingBconstructingCdestructingCdestructingBdestructingA,36,9.分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wage(工资)。,37,对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。在类体中声明成员函数,在类外定义成员函数。在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。,38,#include#includeusingnamespacestd;classTeacherpublic:Teacher(stringnam,inta,chars,stringtit,stringad,stringt);voiddisplay();protected:stringname;intage;charsex;stringtitle,addr,tel;,39,Teacher:Teacher(stringnam,inta,chars,stringtit,stringad,stringt):name(nam),age(a),sex(s),title(tit),addr(ad),tel(t)voidTeacher:display()coutname:nameendl;coutageageendl;coutsex:sexendl;couttitle:titleendl;coutaddress:addrendl;couttel:telendl;,40,classCadrepublic:Cadre(stringnam,inta,chars,stringp,stringad,stringt);voiddisplay();protected:stringname;intage;charsex;stringpost,addr,tel;,41,Cadre:Cadre(stringnam,inta,chars,stringp,stringad,stringt):name(nam),age(a),sex(s),post(p),addr(ad),tel(t)voidCadre:display()coutname:nameendl;coutage:ageendl;coutsex:sexendl;coutpost:postendl;coutaddress:addrendl;couttel:telendl;,42,classTeacher_Cadre:publicTeacher,publicCadrepublic:Teacher_Cadre(stringnam,inta,chars,stringtit,stringp,stringad,stringt,floatw);voidshow();private:floatwage;,43,Teacher_Cadre:Teacher_Cadre(stringnam,inta,chars,stringt,stringp,stringad,stringtel,floatw):Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel)wage=w;voidTeacher_Cadre:show()Teacher:display();coutpost:postendl;coutwage:wageendl;,44,intmain()Teacher_Cadrete_ca(Wang-li,50,f,prof.,president,135BeijingRoad,Shanghai,(021)61234567,1534.5);te_ca.show();return0;,45,10.将本章11.8节中的程序片段加以补充完善,成为一个完整的程序。在程序中使用继承和组合。在定义Professor类对象prof1时给出所有数据的初值,然后修改prof1的生日数据,最后输出prof1的全部最新数据。,46,classTeacher/教师类public:Teacher(intn,stringnam,chars)num=n;name=nam;sex=s;voiddisplay()/定义输出函数coutnum:numendl;coutname:nameendl;coutsex:sexendl;private:intnum;stringname;charsex;,47,classBirthDate/生日类public:BirthDate(inty,intm,intd)year=y;month=m;day=d;voiddisplay()/输出函数coutbirthday:year-month-dayendl;voidchange(inty,intm,intd)/修改生日year=y;month=m;day=d;private:intyear,month,day;,48,classProfessor:publicTeacher/教授类public:Professor(intn,stringnam,chars,inty,intm,intd,floatw):Teacher(n,nam,s),b1(y,m,d)wage=w;voiddisplay();/输出函数voidchange(int,int,int);/修改函数private:floatwage;/工资BirthDateb1;/对象成员;,49,voidProfessor:display()/输出函数Teacher:display();b1.display();coutwage:wageendl;voidProfessor:change(inty,intm,intd)/定义修改函数b1.change(y,m,d);/若year=y;month=m;day=d;/错误/或b1.year=y;b1.month=m;./错误,50,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论