ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:72.73KB ,
资源ID:9811827      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9811827.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++实验二类与对象附答案.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++实验二类与对象附答案.docx

1、C+实验二类与对象附答案实验二 类与对象实验目的和要求1掌握类、类的数据成员、类的成员函数的定义方式。 2理解类成员的访问控制方式。3掌握对象的定义和操作对象的方法。 4理解构造函数和析构函数的定义与执行过程。 5掌握重载构造函数的方法。6了解拷贝构造函数的定义方法。实验内容1下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。 #includeclass Aapublic:Aa(int i=0)a=i;coutConstructor aendl;Aa()coutDestructor aendl;void print()coutaendl;private:int a;in

2、t main()Aa al(1),a2(2);al.print();couta2.aendl;return 0;2检查下面的程序,找出其中的错误,并改正。然后上机调试,使程序能正常运行。(1)#includeclass Datevoid set_date();void show_date();int year;int month;int day;Date d;int main()set_date(); show_date();void set_date() cind.year; cind.month; cind.day;void show_date() coutd.year/d.month/d

3、.dayendl;(2)#includeclass Apublic:void A(int i=0)m=i;void show() coutmendl;void A()private:int m;int main()A a(5); a.m+=10; a.show(); return 0;(3) #include class X private:int a=0; int &b; void setA(int i) a=i;X(int i)a=i; public:int X()a=b=0;X(int i,int j)a=i;b=j;void setC(int k) c=c+k;void main()X

4、 x1;X x2(2);X x3(1,2); x1.setA(3);3调试下列程序。#includeclass TPoint private:int X,Y;public:TPoint(int x,int y)X=x;Y=y;coutConstructor is calledendl;TPoint(TPoint &p);TPoint() coutDestructor is calledendl; int getx() return X; int gety() return Y; ;TPoint:TPoint(TPoint &p)X=p.X;Y=p.Y; coutCopy-initializat

5、ion Constructor is calledendl;void main()TPoint p1(4,9);TPoint p2(p1);TPoint p3 = p2; coutp3=(p3.getx(),p3.gety()endl;(1)写出程序的输出结果,并解释输出结果。(2)按下列要求进行调试: 在主函数体内,添加下列说明语句:TPoint p4,p5(2);调试程序会出现什么现象?为什么?如何解决? (提示: 对已有的构造函数进行适 当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。( 3)在主函数内使用 new 创建不同参数动态两个动态对象,输出其坐标,并用 delet

6、e 删除之。运行程序,分析运行结果。(4)在程序中定义个全局对象,在主函数最前添加语句: coutEnter mainendl;运行程序,分析运行结果。4 完善程序,并写出运行结果根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。如果某个自然数除了 1和它本身外还有其他因子,则这个自然数就是合数(非素数) 。试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。当找到 第一组连续的n个合数后,即停止查找。具体要求如下:(1)私有成员intn :存放满足条件的连续自然数的个数。int *p:根据n的值申请一个动态数组用来存放求出的满足条件的 n个自然数。(2)公有

7、成员函数NUM(int n1):构造函数,用n1初始化n,根据n的值申请动态数组空间,使 p指向该动态数组空间。int yes(int x):判断x是否为合数。如果是,返回 1,否则返回0。void fun():从3开始向上试探找出 n个连续的自然数,且它们都是合数,并依次存入动态数组。void print():输出满足条件的n个合数。NUM():析构函数,释放动态数组所占用的存储空间。(3) 在主函数中定义一个 NUM类的对象num,求出10个连续的合数。然后通过对象 num调用成员函数求出10个连续的合数,并输出计算结果。#in clude class NUM 定义数据类NUMprivat

8、e:int n; int *p;public:NUM(i nt n1)n=n1;p= ; /动态分配存放连续合数的存储空间int yes(i nt x)for(int i=2;i=x/2;i+) if (x%i=0)return 1;return 0;void fun( void)int j;for(int i=3;1;i+)j=0;while( &jn)Pj=i;j+;i+;if(j=n)break;void prin t(void)cout找到的n个连续合数为:endl;for(i nt i=0;i n ;i+)coutpi;coute ndl;NUM() ; /释放在构造函数中申请的存储

9、空间;void mai n()cout请输入要求的连续合数的个数 (例如10):;int n;cinn;NUM num( n); ; 寻找连续的合数,并存入动态申请的存储空间中 ; 输出寻找到的合数5. 请定义一个矩形类(Rectangle),私有数据成员为矩形的长度 (len)和宽度(wid),缺省构造 函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、求矩形面积、取矩形长度和宽度、修改矩形长度和宽度为对应形参的值、输出矩形尺寸 等公有成员函数。要求输出矩形尺寸的格式为“ length:长度,width :宽度”。编写主函数对定义的类进行测试。6.

10、声明一个时间类,时间类中有 3个私有数据成员(Hour, Mi nu te , Seco nd)和两个公有成员函数(SetTime和PrintTime)。SetTime根据传递的3个参数为对象设置时间; PrintTime负责将对象表示的时间显示输出,输出格式为“ Hour: Mi nute : Seco nd”。(1)在主函数中,建立一个时间类的对象, 设置时间为9点20分30秒并显示该时间。(2) 使用构造函数代替上面的 SetTime成员函数,并在主函数中使用构造函数设置时 间为10点40分50秒,并显示该时间。(3)重载时间类的构造函数(不带参数)使小时、分、秒均为 0。(4) 在时间

11、类的析构函数中输出 Good bye!”7下面是一个整型链表类 intList 的声明,请给出该类所有数据成员的类外定义,并在主函数中测试该类。class intListprotected:struct Nodeint data;Node *next;Node *L;public:intList(); /构造函数intList(); /析构函数bool Insert(int i,int elem);bool Remove(int i,int &elem);删除链表的第i个位置的元素,删除成功返回 true,失败返回falseint Find(int elem);在链表中查找值为 elem的元素

12、,找到返回该元素在链表中的位置,否则返回 0int Length(); /返回链表长度(元素个数)void PrintList(); /输出链表 ;参考答案(非权威,仅仅是我自己的理解,如有错误, 欢迎批评指正!)第一题:#i ncludeclass Aapublic:Aa( int i=0)a=i;coutC on structor ae ndl; Aa()coutDestructor ae ndl;void prin t()coutae ndl;private:;int a;int main() Aa al(1),a2(2); al.pri nt(); a2.pri nt(); retur

13、n 0;ConstructoF 1Constructor 212Destructor 2Des tractor 1 (Pi*ess anjy key to cantInue第二题(1)#i nclude class Datepublic:void set_date(); void show_date();private:;int year; int mon th;int day;Date d; int main() d.set_date(); d.show_date(); return 0;void Date:set_date() _cin year; cinmonth; cin day; v

14、oid Date:show_date() _coutvvyearvv/vv mon th/daye ndl;(2)#i ncludeclass Apublic:A(int i=0) m=i;void show()coutvvmvve ndl;A()frie nd void add(A &);private:int m;;void add(A &a)a.m+=10; int main() A a(5); add(a); a.show(); return 0;(3)#includeclass Xprivate:int a,b,c;public:;X(int i)a=i;X()a=b=0;X(int

15、 i,int j)a=i;b=j;void setC(int k)c=c+k;void setA(int i)a=i;void main()X x1;X x2(2);X x3(1,2);x1.setA(3);第三题void mai n()TPoint p1(4,9); 调用构造函数初始化plTPoi nt p2(p1); /显示调用拷贝构造函数初始化 p2TPoint p3 = p2; 对象之间的赋值,由于之前没有定义 p3,因此用另一个同类的对象给其赋值时,会调用拷贝构造函数。coutvvp3=(vvp3.getx()vv,vvp3.gety()vv)vC + - ZZDebdg2. exe

16、Constructoi* calledCopy-in it ializat iBJestructop is calledDestructor is calledDesCvwctoF is calledPress any key to continue答:调试程序会程序错误,原因是对于无输入的对象和只要一个输入值的对象没 有相应的构造函数,要解决也挺简单,就是在说明部分加上相应的构造函数就可 以了。修改后的程序如下:#i nclude class TPoint private:int X,Y; public:TPoint()X=Y=0; coutA Constructor is calleden

17、dl;TPoint(int i)X=i;Y=0; coutB Constructor is calledendl;TPoint(int x,int y)X=x;Y=y;coutConstructor is calledendl;TPoint(TPoint &p);TPoint() coutDestructor is calledendl; int getx() return X; int gety() return Y; ;TPoint:TPoint(TPoint &p)X=p.X;Y=p.Y; coutCopy-initialization Constructor is calledendl

18、;void main()TPoint p1(4,9); coutp1=(p1.getx(),p1.gety()endl;TPoint p2(p1); coutp2=(p2.getx(),p2.gety()endl;TPoint p3 = p2;coutvvp3=(vvp3.getx()vv,vvp3.gety()vv)ve ndl; TPoi nt p4,p5(2);coutvvp4=(vvp4.getx()vv,vvp4.gety()vv)ve ndl;coutvvp5=(vvp5.getx()vv,vvp5.gety()vv)ve ndl;直3 D:C-b-肢验二、g2 .exe I 1=

19、1 丨回Constpuctor is called pl=Copy-in it ializat ion Constructop is called p2=Copy-in it ializat ion Constructop is called p3=A ConstiLictop is calledB ConstPLictoi* is called p4=t)5=C2,BDestruetor is calledDestructor is calledDestruetor is calledDestructor is calledDestruetor is calledPress any key

20、to cont in Lie#i ncludeclass TPoi ntprivate:int X,Y;public:TPoi nt(i nt x,i nt y)X=x;Y=y;coutC on structor is callede ndl;TPoi nt(TPoi nt & p);TPoi nt()coutDestructor is calledgetx()vv,vvp1-gety()vv)ve ndl; delete p1;#i nclude class TPointprivate:int X,Y;public:TPoint(int x,int y)X=x;Y=y;coutConstru

21、ctor is calledendl;TPoint(TPoint &p);TPoint()coutDestructor is calledendl;int getx() return X; int gety() return Y; void ShowPoint()coutp1=(X,Y)endl;TPoint:TPoint(TPoint &p)X=p.X;Y=p.Y;coutCopy-initialization Constructor is calledendl;void main()coutEnter mainShowPoint();delete p1;S OC+ +iZZDebjg2.e

22、xe 三1旦僵工盘Enter nainConstructor Is called01-Destmctop is called Press any key to continue第四题:#i nclude class NUM 定义数据类NUMprivate:int n; int *p;public:NUM(i nt n1)n=n1;p=new intn; 动态分配存放连续合数的存储空间int yes(i nt x)for(int i=2;i=x/2;i+)if (x%i=0) return 1;return 0;void fun(void)int j;for(int i=3;1;i+)j=0;w

23、hile(yes(i)&jn)pj=i;j+;i+;if(j=n) break;void print(void)coutvv找到的*个连续合数为:endl;for(int i=0;in;i+)coutpi ;coutn;NUM num(n);num.fun(); /寻找连续的合数,并存入动态申请的存储空间中num.print() ; /输出寻找到的合数籍鑑瑋鬆勰的个数*例如価片花114 115 116 117 118 119 120 121 122 123Press any key to cont in Lie第五题:#i ncludeclass Recta ngleprivate:int l

24、en ,wid;public:Recta ngle()len=wid=0;coutFirst Con structor is callede ndl;Recta ngle(i nt i,i nt w)len=i;wid=w;coutSec ond Con structor is calledlen; cinwid;Rectangle() coutDestructor is calledendl;void main()int temp;Rectangle rect,Default(8,9);coutendl;cout 默 认 长 度 : Default.get_len() , 默 认 宽 度 : Default.get_wid()endl;cout 矩形的周长为: Default.Get_Perimeter()endl;cout 矩形的面积为: Default.Get_Area()endl; couttemp;while(temp=1)coutvv请输入矩形的长和宽:e ndl; rect.Set_Rectangle();coutvv 长 度 : vvr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1