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

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

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

1、精选学习资料 - - - - - - - - - 第六章习题答案一、挑选填空 1、A 2 、C 3、D 4 、 B 5 、D 6 、A 7 、C 8、A 9 、D 10、A 11 、C 12、A 13、B 14、 C 15、C 16、D 17、 B 18、C 19、A 20、D 21、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

2、 called Constructor called a=0,b=0 a=4,b=8 2、运行该程序输出结果如下所示;a=7,b=9 3、运行该程序输出结果如下所示;104 4、运行该程序输出结果如下所示;1035,789.504 5、运行该程序输出结果如下所示;1 0 ,1, 2,3,4,5,6,7,8 1 11 ,12,13,14,15, 16,17,18,19 19 ,18,17,16,15, 14,13,12, 11 6、运行该程序输出结果如下所示;Starting1: Default constructor called. Default constructor called. De

3、fault constructor called.Eding1: Starting2: Constructor: a=5,b=6 Constructor: 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 1 / 22 名师归纳总结 - - - - - - -第 1 页,共 22 页精选学习资料 - - -

4、- - - - - - Destructor called.a=1,b=2 7、运行该程序输出结果如下所示;Default constructor called. Defaultconstructor called. Default constructor called. Default constructor called. Destructor called. Constructor1 called. Destructor called. Constructor2 called. Destructor called. x=0,y=0 x=5,y=0 x=2,y=3 Destructor c

5、alled. Destructor called. Destructor called. 8、运行该程序输出结果如下所示;Constructor called.0 Constructor called.5 Destructor called.5 5 Destructor called.5 9、运行该程序输出结果如下所示;Constructor called.5 5 Destructor called.5 10、运行该程序输出结果如下所示;Default Constructor called. Constructor:real=6.8,imag=0 Constructor:real=5.6,im

6、ag=7.9 0+0I 6.8+0I 5.6+7.9I Constructor:real=1.2,imag=3.4 Constructor:real=5,imag=0 Default Constructor called. 1.2+3.4I 5+0I 0+0I 11、答:该程序中用string.h 中所包含的函数有3 种,它们是strcpy 、strcat 和 strlen . 该程序中使用了函数重载;它们是下述两个构造函数重载:char * str ;2 / 22 String 和 Stringconst 名师归纳总结 - - - - - - -第 2 页,共 22 页精选学习资料 - -

7、- - - - - - - 类中成员函数 Setc 的功能是用来设置字符数组中某位置的一个指定字符;类中成员函数 Getc 的功能是用来从某个字符数组中猎取指定位置的字符;类中成员函数 Append 的功能是在一个字符数组中追加一个指定的字符串,即将指定的字符串添加到已知串的后边;不行;该程序中有两处使用了 new 运算符;运行该程序输出结果如下所示;empty. a string. 9 a string. i this a string. 四、改正以下程序中的错误;1、该程序中point 类的构造函数定义不正确,在main 中队数据成员的拜访不正确,修改如下:#include class p

8、oint int x1,x2 ;public: pointint x,int ypoint:x=x;point:y=y ; void disp coutx1endl ; coutx2endl ; / ;void main point data5,5 ;data.disp; 2、在 main 函数中的 成员函数拜访;五、按以下要求编写程序;p.x+=5 和 p.y+=6 两个语句是错误的,由于爱护数据仅能被类的1、程序内容如下所示;#include class Test public: Test Testint i,int j=20 3 / 22 名师归纳总结 - - - - - - -第 3

9、页,共 22 页精选学习资料 - - - - - - - - - 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&T t+=T.t ;return t ; int addTest&T int n=T.t1+T.t2 ;return n ; int Test:t=5 ;void main Test a1,a210,a315,25;coutadda2endl ;coutTest:funa2endl ; 2、程序内

10、容如下所示;#include #include class Product char *name; int price ; int quantity ;public: Productchar *n,int p,int q name =new charstrlenn+1 ; strcpyname,n;price=p;quantity=q ; 4 / 22 名师归纳总结 - - - - - - -第 4 页,共 22 页精选学习资料 - - - - - - - - - Product ifname delete name; name=0; void buyint money int n,r ; n

11、=money/price ; ifnquantity cout 数量不够 endl ; else quantity-=n ; r=money%price ; cout 产品: name 单价: price 元 顾客 ; coutmoney 元,买了 n 台,剩余 r 元endl ; void get const cout 产品: name 单价: price 元 剩余 quantity 台endl ; ;void main Product p1 电视机 ,2000,15 ; p1.buy7000 ; p1.get; p1.buy4500 ; p1.get; 3、程序内容如下所示;#includ

12、e #include class CDate private: int m_nDay ; int m_nMonth ; int m_nYear ;5 / 22 名师归纳总结 - - - - - - -第 5 页,共 22 页精选学习资料 - - - - - - - - - public: CDate ; CDateint day,int month,int year ; void Display ; void AddDay ; void SetDateint day,int month,int year ; CDate; private: bool IsLeapYear ; /判定该年是否为闰

13、年 ;CDate:CDate CDate:CDateint day,int month,int year m_nDay=day ; m_nMonth=month ; m_nYear=year; void CDate:Display char day5 ; char month5 ; char year5 ; _itoam_nDay,day,10; _itoam_nMonth,month,10 ; _itoam_nYear,year,10; coutday/month/year31 ifm_nMonth=12 m_nYear+ ; m_nMonth=1 ; m_nDay=1 ; else m_n

14、Month+ ; m_nDay=1 ; void CDate:SetDateint day,int month,int year m_nDay=day ; m_nMonth=month ; m_nYear=year; CDate:CDate bool CDate:IsLeapYear bool bLeap; if m_nYear%4.=0 bLeap=false; else ifm_nYear%100.=0 bLeap=true;else ifm_nYear%400.=0 bLeap=false; else bLeap=true; return bLeap; void main 7 / 22

15、名师归纳总结 - - - - - - -第 7 页,共 22 页精选学习资料 - - - - - - - - - CDate d; d.SetDate2001,2,28; cout :; d.Display ; d.AddDay ; cout:; d.Display ; 4、程序内容如下所示;#include class Tc private: double unlead,lead,total ;int unprice,price ; public: Tcunprice=17 ;price=16; void getdata coutunlead ; coutlead ; total=unpri

16、ce*unlead+price*lead ; void disp cout 总收入: totalendl ; ;void main Tc A; A.getdata; A.disp ; 5、程序内容如下所示;#include class CFactorial int value ;int fact ; public: 8 / 22 名师归纳总结 - - - - - - -第 8 页,共 22 页精选学习资料 - - - - - - - - - CFactorialint val ;void CalculateFactorial ;void Display ; ;CFactorial:CFacto

17、rialint val value=val ; fact=1; void CFactorial:CalculateFactorial int i=value ; whilei1 fact*=i- ; void CFactorial:Display coutvalue.=factendl; void main CFactorial A5 ; A.CalculateFactorial ; A.Display ; 6、程序内容如下所示;#include #include class rectangle private: float ledge,sedge; public: rectangle ;re

18、ctanglefloat a,float b ledge=a;sedge=b; ;float area return ledge*sedge; ;void addarearectangle r1,rectangle r2 9 / 22 名师归纳总结 - - - - - - -第 9 页,共 22 页精选学习资料 - - - - - - - - - cout 总面积: r1.ledge*r1.sedge+ r2.ledge*r2.sedgeendl ; ;void main rectangle A3.5,2.5,B4.2,3.8,C ; C.addareaA,B ; 7、程序内容如下所示;#in

19、clude #include class rectangle private: float ledge,sedge; public: rectangle ;rectanglefloat a,float b ledge=a;sedge=b; ;float area return ledge*sedge; ;void showlength cout 周长: ledge+sedge*2endl ; rectangle tlengthrectangle r2 rectangle temp; temp.ledge=ledge+r2.ledge ; temp.sedge=sedge+r2.sedge; r

20、eturn temp; ;void main rectangle A3.5,2.5,B4.2,3.8 ; coutA ; A.showlength ;10 / 22 名师归纳总结 - - - - - - -第 10 页,共 22 页精选学习资料 - - - - - - - - - coutB ; B.showlength ; rectangle C=A.tlengthB ; coutC ; C.showlength ; 8、程序内容如下所示;#include #include class Line private: double x1,x2,y1,y2 ; public: Line ;Line

21、double a,double b,double c,double d x1=a;y1=b;x2=c;y2=d; cout 线段端点 x1,y1-x2,y20&r0&t1 cout0&r=1 cout=1 | r0&t1 coutendl ; else coutendl ; ;void main Line A2,2,18,18,B1,12,19,5 ; twolineA,B ; 9、此题涉及两个类student 和 cdegree,前者为同学类,包含同学的学号no,姓名(name)和成果 degree,而成果degree 是类 cdegree的对象; cdegree类有 3 个数据成员,分别为

22、数学 math,英语 english和物理 phy 分数;11 / 22 名师归纳总结 - - - - - - -第 11 页,共 22 页精选学习资料 - - - - - - - - - 程序内容如下所示;#include class student int no ; char name10 ; class cdegree public: int math ; int english ; int phy ;degree;public: void getdata coutno ; coutname ; coutdegree.math; coutdegree.english ; coutdegr

23、ee.phy ; void disp cout 学号: noendl ; cout 姓名: nameendl ; cout 数学分数: degree.mathendl ; cout 英语分数: degree.englishendl ; cout 物理分数: degree.phyendl ; ;void main student stud; stud.getdata; stud.disp; 10、程序内容如下所示;#include 12 / 22 名师归纳总结 - - - - - - -第 12 页,共 22 页精选学习资料 - - - - - - - - - class Student int

24、 english,computer,total ; public: void getscore;void display ;void sortStudent * ;Student; ;void Student:getscore coutenglish ; coutcomputer ; total=english+computer ; void Student:sortStudent *p int tmp,i,j ; forj=0 ;j2 ;j+ fori=0 ;i2;i+ if totaltotal tmp=total ; total=p-total ; p-total=tmp ; tmp=e

25、nglish ; english=p-english ; p-english=tmp ; tmp=computer ; computer=p-computer ; p-computer=tmp ; void Student:display cout 英语 =english 运算机 =computer 总分 =totalendl ; void main Student *A3 ; for int j=0 ;j3 ;j+ 13 / 22 名师归纳总结 - - - - - - -第 13 页,共 22 页精选学习资料 - - - - - - - - - Aj=new Student ; cout 同

26、学 j+1getscore ; int i ;for j=0 ;j2 ;j+ fori=0 ;isortAi+1 coutendl 排序结果如下:endl ;for i=0 ;idisplay ; 11、程序内容如下所示;#include 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

27、; newnode-data=x; newnode-next=ptr ; ptr=newnode ; int Stack:pop / 出栈成员函数 list *top ; int value ; value=ptr-data ; top=ptr ; ptr=ptr-next ; delete top; return value; 14 / 22 名师归纳总结 - - - - - - -第 14 页,共 22 页精选学习资料 - - - - - - - - - void main Stack A; int arr=5,2,8,1,4,3,9,7,6; cout 入栈次序: ; for int i

28、=0 ;i9 ;i+ coutarri ;A.pusharri ; coutendl 出栈次序: ;for i=0 ;i9 ;i+ coutA.pop ;coutendl ; 12、程序内容如下所示;#include struct list int data; list *next ; ;class Queue list *ptrf,*ptrb ; /队首和队尾指针 public: Queue ptrf=ptrb=NULL; void enqueueint ;int dequeue; ;void Queue:enqueueint x / 入队成员函数 list *newnode=new lis

29、t ; newnode-data=x; newnode-next=NULL ; if ptrb=NULL ptrf=ptrb=newnode ; else ptrb-next=newnode ; ptrb=newnode ;15 / 22 名师归纳总结 - - - - - - -第 15 页,共 22 页精选学习资料 - - - - - - - - - ;int Queue:dequeue / 出队成员函数 list *tmp ; int value ; value=ptrf-data ; tmp=ptrf ; ptrf=ptrf-next ; delete tmp; return value

30、; void main Queue 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 tree int data; tree *left,*right,*father;*bstree ;class Btree static int n; static int m ;publi

31、c: tree *root ; Btree root=NULL ;16 / 22 名师归纳总结 - - - - - - -第 16 页,共 22 页精选学习资料 - - - - - - - - - void create_Btreeint ; void inorderbstree ; / 中序遍历 void display coutendl中序遍历序列 : endl ;inorderroot ;coutdata.=k printp-left,k ; printp-right,k ; else coutk 的双亲结点的内容为:father-datadata=x; newnode-right=ne

32、wnode-left=NULL ifroot=NULL root=newnode ; else bstree back; bstree current=root ; whilecurrent.=NULL back=current ; ifcurrent-datax current=current-left ; else current=current-right ;17 / 22 名师归纳总结 - - - - - - -第 17 页,共 22 页精选学习资料 - - - - - - - - - ifback-datax back-left=newnode ;newnode-father=back ; else back-right=newnode ;newnode-father=back ; int Btree:countbstree p ifp=NULL return 0; else return countp-left+countp-right+1; / 这是运用了函数嵌套即递归的方法;void Btree:inorderbstree temp / 这是中序遍历二叉树,采纳了递归的方法; iftemp.=NULL inordertemp-left ; coutdataright ; void main

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

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

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

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