2022年面向对象程序设计山师第六章习题答案 .docx

上传人:Q****o 文档编号:37755762 上传时间:2022-09-01 格式:DOCX 页数:36 大小:58.26KB
返回 下载 相关 举报
2022年面向对象程序设计山师第六章习题答案 .docx_第1页
第1页 / 共36页
2022年面向对象程序设计山师第六章习题答案 .docx_第2页
第2页 / 共36页
点击查看更多>>
资源描述

《2022年面向对象程序设计山师第六章习题答案 .docx》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计山师第六章习题答案 .docx(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品_精品资料_一、挑选填空第六章习题答案可编辑资料 - - - 欢迎下载精品_精品资料_1、A 2 、C 3 、D 4 、 B 5 、D6 、A 7 、C 8 、A 9 、D 10 、A11 、C 12 、A13、B 14、 C 15、C16 、D 17、 B 18、C 19、A 20、D21、C 22、B二、判定以下描述的正确性,对者划,错者划.1、 2、 3、 4、 5、 6、 7、 8、 9、 10、11、12、13、14、15、16、17、18、19、20、21、22、三、分析以下程序的输出结果.1、运行该程序输出结果如下所示.Default constructor called C

2、onstructor calleda=0,b=0 a=4,b=82、运行该程序输出结果如下所示.a=7,b=93、运行该程序输出结果如下所示.1044、运行该程序输出结果如下所示.1035,789.5045、运行该程序输出结果如下所示.10 ,1, 2, 3, 4, 5,6, 7, 8 111 , 12, 13, 14, 15, 16, 17, 18, 1919 , 18, 17, 16, 15, 14, 13,12, 116、运行该程序输出结果如下所示.Starting1:Default constructor called. Default constructor called. Defa

3、ult constructor called.Eding1: Starting2:Constructor: a=5,b=6Constructor: a=7,b=8 Constructor: a=9,b=10 Ending2:Destructor called.a=9,b=10 Destructor called.a=7,b=8 Destructor called.a=5,b=6 Destructor called.a=5,b=6 Destructor called.a=3,b=4可编辑资料 - - - 欢迎下载精品_精品资料_Destructor called.a=1,b=27、运行该程序输出

4、结果如下所示.Default constructor called.Defaultconstructor called. Default constructor called. Default constructor called. Destructor called.Constructor1 called.Destructor called.Constructor2 called. Destructor called. x=0,y=0x=5,y=0 x=2,y=3Destructor called. Destructor called. Destructor called.8、运行该程序输出

5、结果如下所示.Constructor called.0 Constructor called.5 Destructor called.5 5Destructor called.59、运行该程序输出结果如下所示.Constructor called.55Destructor called.510、运行该程序输出结果如下所示.Default Constructor called.Constructor:real=6.8,imag=0 Constructor:real=5.6,imag=7.9 0+0I6.8+0I5.6+7.9IConstructor:real=1.2,imag=3.4 Const

6、ructor:real=5,imag=0 Default Constructor called.1.2+3.4I5+0I0+0I11、答:该程序中用string.h 中所包含的函数有3 种,它们是 strcpy 、strcat 和 strlen .该程序中使用了函数重载.它们是下述两个构造函数重载:String 和 Stringconst char * str .可编辑资料 - - - 欢迎下载精品_精品资料_类中成员函数 Setc 的功能是用来设置字符数组中某位置的一个指定字符.类中成员函数 Getc 的功能是用来从某个字符数组中猎取指定位置的字符.类中成员函数 Append 的功能是在一个

7、字符数组中追加一个指定的字符串,即将指定的字符串添加到已知串的后边.不行.该程序中有两处使用了new 运算符.运行该程序输出结果如下所示.empty. a string. 9a string. ithis a string.四、改正以下程序中的错误.1、该程序中 point 类的构造函数定义不正确,在main 中队数据成员的拜访不正确, 修改如下:#include class pointint x1,x2 .public:pointint x,int ypoint:x=x.point:y=y . void dispcoutx1endl .coutx2endl ./ .void mainpoin

8、t data5,5 .data.disp.2、在 main 函数中的 p.x+=5 和 p.y+=6 两个语句是错误的,由于爱护数据仅能被类的成员函数拜访.五、按以下要求编写程序.1、程序内容如下所示.#include class Testpublic:TestTestint i,int j=20可编辑资料 - - - 欢迎下载精品_精品资料_t1=i .t2=j .t+=j-i .static int funTest&T .friend int addTest&T .private:int t1,t2 .static int t . .int Test:funTest&Tt+=T.t .re

9、turn t .int addTest&Tint n=T.t1+T.t2 .return n .int Test:t=5 .void mainTest a1,a210,a315,25.coutadda2endl .coutTest:funa2endl .2、程序内容如下所示.#include #include class Productchar *name .int price .int quantity .public:Productchar *n,int p,int qname =new charstrlenn+1 .strcpyname,n.price=p .quantity=q .可编

10、辑资料 - - - 欢迎下载精品_精品资料_Productifnamedelete name .name=0.void buyint moneyint n,r .n=money/price .ifnquantitycout 数量不够 endl .elsequantity-=n .r=money%price .cout 产品: name 单价: price 元 顾客 .coutmoney 元,买了 n 台,剩余 r 元endl .void get constcout 产品: name 单价: price 元 剩余quantity 台endl . .void mainProduct p1 电视机

11、,2022,15 .p1.buy7000 .p1.get.p1.buy4500 .p1.get.3、程序内容如下所示.#include #include class CDateprivate:int m_nDay . int m_nMonth .int m_nYear .可编辑资料 - - - 欢迎下载精品_精品资料_public:CDate .CDateint day,int month,int year .void Display .void AddDay .void SetDateint day,int month,int year .CDate .private:bool IsLeap

12、Year . /判定该年是否为闰年 .CDate:CDateCDate:CDateint day,int month,int yearm_nDay=day .m_nMonth=month .m_nYear=year.void CDate:Displaychar day5 .char month5 .char year5 ._itoam_nDay,day,10 ._itoam_nMonth,month,10 ._itoam_nYear,year,10.coutday/month/year31ifm_nMonth=12m_nYear+ .m_nMonth=1 .m_nDay=1 .elsem_nM

13、onth+ .m_nDay=1 .void CDate:SetDateint day,int month,int yearm_nDay=day .m_nMonth=month .m_nYear=year.CDate:CDatebool CDate:IsLeapYearbool bLeap .if m_nYear%4.=0 bLeap=false.else ifm_nYear%100.=0bLeap=true .else ifm_nYear%400.=0 bLeap=false.elsebLeap=true .return bLeap .void main可编辑资料 - - - 欢迎下载精品_精

14、品资料_CDate d.d.SetDate2022,2,28.cout : .d.Display .d.AddDay .cout :.d.Display .4、程序内容如下所示.#include class Tcprivate:double unlead,lead,total .int unprice,price .public:Tcunprice=17 .price=16 . void getdatacoutunlead .coutlead .total=unprice*unlead+price*lead .void dispcout 总收入: totalendl . .void mainT

15、c A.A.getdata.A.disp .5、程序内容如下所示.#include class CFactorialint value .int fact .public:可编辑资料 - - - 欢迎下载精品_精品资料_CFactorialint val .void CalculateFactorial .void Display . . CFactorial:CFactorialint valvalue=val .fact=1 .void CFactorial:CalculateFactorialint i=value .whilei1 fact*=i- .void CFactorial:D

16、isplaycoutvalue.=factendl.void mainCFactorial A5 .A.CalculateFactorial .A.Display .6、程序内容如下所示.#include #include class rectangleprivate:float ledge,sedge.public: rectangle .rectanglefloat a,float bledge=a.sedge=b. .float areareturn ledge*sedge. .void addarearectangle r1,rectangle r2可编辑资料 - - - 欢迎下载精品

17、_精品资料_cout 总面积: r1.ledge*r1.sedge+ r2.ledge*r2.sedgeendl. .void mainrectangle A3.5,2.5,B4.2,3.8,C .C.addareaA,B .7、程序内容如下所示.#include #include class rectangleprivate:float ledge,sedge.public: rectangle .rectanglefloat a,float bledge=a.sedge=b. .float areareturn ledge*sedge. .void showlengthcout 周长: l

18、edge+sedge*2endl .rectangle tlengthrectangle r2rectangle temp.temp.ledge=ledge+r2.ledge .temp.sedge=sedge+r2.sedge.return temp. .void mainrectangle A3.5,2.5,B4.2,3.8 .coutA .A.showlength .可编辑资料 - - - 欢迎下载精品_精品资料_coutB .B.showlength .rectangle C=A.tlengthB .coutC .C.showlength .8、程序内容如下所示.#include #i

19、nclude class Lineprivate:double x1,x2,y1,y2 .public:Line .Linedouble a,double b,double c,double dx1=a.y1=b .x2=c .y2=d .cout 线段端点 x1,y1-x2,y20&r0&t1 cout0&r=1cout=1 | r0&t1 coutendl .elsecoutendl . .void mainLine A2,2,18,18,B1,12,19,5 .twolineA,B .9、此题涉及两个类student 和 cdegree,前者为同学类,包含同学的学号no,姓名(name)

20、和成果 degree,而成果 degree 是类 cdegree的对象. cdegree类有 3 个数据成员, 分别为数学 math,英语 english 和物理 phy 分数.可编辑资料 - - - 欢迎下载精品_精品资料_程序内容如下所示.#include class studentint no .char name10 .class cdegreepublic:int math .int english .int phy .degree.public:void getdatacoutno .coutname .coutdegree.math.coutdegree.english .cou

21、tdegree.phy .void dispcout 学号: noendl .cout 姓名: nameendl .cout 数学分数: degree.mathendl .cout 英语分数: degree.englishendl .cout 物理分数: degree.phyendl . .void mainstudent stud.stud.getdata.stud.disp.10、程序内容如下所示.#include 可编辑资料 - - - 欢迎下载精品_精品资料_class Studentint english,computer,total .public:void getscore .v

22、oid display .void sortStudent * .Student. .void Student:getscorecoutenglish .coutcomputer .total=english+computer .void Student:sortStudent *pint tmp,i,j .forj=0 .j2 .j+ fori=0 .i2 .i+ if totaltotaltmp=total .total=p-total .p-total=tmp .tmp=english .english=p-english .p-english=tmp .tmp=computer .co

23、mputer=p-computer .p-computer=tmp .void Student:displaycout 英语=english 运算机 =computer 总分 =totalendl .void mainStudent *A3 .for int j=0 .j3 .j+可编辑资料 - - - 欢迎下载精品_精品资料_Aj=new Student .cout 同学j+1getscore .int i .for j=0 .j2 .j+ fori=0 .isortAi+1.coutendl 排序结果如下: endl .for i=0 .idisplay.11、程序内容如下所示.#incl

24、ude struct list / 定义栈int data.list *next . .class Stack/定义一个栈操作类list *ptr .public:Stackptr=NULL. void pushint i .int pop . .void Stack:pushint x / 入栈成员函数list *newnode=new list .newnode-data=x .newnode-next=ptr .ptr=newnode .int Stack:pop/ 出栈成员函数list *top .int value .value=ptr-data .top=ptr .ptr=ptr-

25、next .delete top.return value.可编辑资料 - - - 欢迎下载精品_精品资料_void mainStack A.int arr=5,2,8,1,4,3,9,7,6.cout 入栈次序: .for int i=0 .i9 .i+coutarri .A.pusharri .coutendl 出栈次序: .for i=0 .i9 .i+ coutA.pop .coutendl .12、程序内容如下所示.#include struct listint data.list *next . .class Queuelist *ptrf,*ptrb. /队首和队尾指针publi

26、c:Queueptrf=ptrb=NULL.void enqueueint .int dequeue. .void Queue:enqueueint x / 入队成员函数list *newnode=new list .newnode-data=x .newnode-next=NULL .if ptrb=NULL ptrf=ptrb=newnode .elseptrb-next=newnode .ptrb=newnode .可编辑资料 - - - 欢迎下载精品_精品资料_ .int Queue:dequeue/ 出队成员函数list *tmp .int value .value=ptrf-dat

27、a .tmp=ptrf .ptrf=ptrf-next .delete tmp.return value.void mainQueue A.int arr=3,12,8,9,11.cout 入队次序. .for int i=0 .i5 .i+coutarri .A.enqueuearri .coutendl 出队次序: .fori=0 .i5 .i+ coutA.dequeue .coutendl .13、程序内容如下所示.#include#include typedef struct treeint data.tree *left,*right,*father.*bstree .class

28、Btreestatic int n.static int m .public:tree *root .Btreeroot=NULL .可编辑资料 - - - 欢迎下载精品_精品资料_void create_Btreeint .void inorderbstree ./ 中序遍历void display coutendl中序遍历序列 : endl .inorderroot .coutdata.=kprintp-left,k .printp-right,k .elsecoutk 的双亲结点的内容为:father-datadata=x .newnode-right=newnode-left=NULL

29、.ifroot=NULL root=newnode .elsebstree back. bstree current=root .whilecurrent.=NULLback=current .ifcurrent-dataxcurrent=current-left .elsecurrent=current-right .可编辑资料 - - - 欢迎下载精品_精品资料_ifback-dataxback-left=newnode .newnode-father=back . elseback-right=newnode .newnode-father=back .int Btree:countbs

30、tree pifp=NULLreturn 0.elsereturn countp-left+countp-right+1./ 这是运用了函数嵌套即递归的方法.void Btree:inorderbstree temp/ 这是中序遍历二叉树,采纳了递归的方法.iftemp.=NULLinordertemp-left .coutdataright .void mainBtree A.int array=7,4,1,5,12,8,13,11.int k .k=sizeofarray/sizeofarray0.cout 建立排序二叉树次序 : endl .forint i=0 . ik .i+cout

31、arrayi .A.create_Btreearrayi .coutendl .cout 二叉树节点个数:A.countA.rootendl.A.display .可编辑资料 - - - 欢迎下载精品_精品资料_14、程序内容如下所示.#include #include struct listint data.list *next . .class Stacklist *ptr .public: Stackptr=NULL. void pushint i .int pop .int emptyif ptr=NULL return 1.else return 0. .void Stack:pus

32、hint xlist *newnode=new list .newnode-data=x .newnode-next=ptr .ptr=newnode .int Stack:poplist *top .int value .value=ptr-data .top=ptr .ptr=ptr-next .delete top.return value.class Queuelist *ptrf,*ptrb.public:Queue可编辑资料 - - - 欢迎下载精品_精品资料_ptrf=ptrb=NULL.void enqueueint .int dequeue. .void Queue:enqu

33、eueint xlist *newnode=new list .newnode-data=x .newnode-next=NULL .if ptrb=NULL ptrf=ptrb=newnode .elseptrb-next=newnode .ptrb=newnode . .int Queue:dequeuelist *tmp .int value .value=ptrf-data .tmp=ptrf .ptrf=ptrf-next .delete tmp.return value.void mainStack S.Queue Q.char ch.cout 输入数据: .whilech=get

34、char.=.S.pushch.Q.enqueuech.while.S.empty & S.pop=Q.dequeue.if S.emptycout 输入的是回文数据. endl .elsecout 输入的不是回文数据. endl .可编辑资料 - - - 欢迎下载精品_精品资料_15、程序内容如下所示.#include #include class magicint m44 .int step.int first .int sum.public:void getdata .void setfirstmagic .void generatemagic .void printmagic . .v

35、oid magic:getdatacoutfirst .coutstep.void magic:setfirstmagicint i,j . int tmp .tmp=first .fori=0 .i4 .i+forj=0 . j4 .j+mij=tmp.tmp+=step.void magic:generatemagicsum=m00+m33.for int i=0,j=0 .i4 . i+,j+ mij=sum-mij.for i=0,j=3 .i4 .i+,j- mij=sum-mij.void magic:printmagic可编辑资料 - - - 欢迎下载精品_精品资料_int i,j .fori=0 .i4 .i+for

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁