版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、天津理工大学计算机与通信工程学院实验报告2013 至 2014 学年 第 二 学期课程名称高级语言程序设计实验( 4 )实验名称多态程序设计实验时间 2014 年 4 月 28 日 第 3 节 至 第 6 节学号姓名专业信息安全主讲教师唐召东辅导教师唐召东软件环境vc+6硬件环境pc机实验目的(1)掌握运算符重载的方法;(2)掌握使用虚函数实现动态多态性;实验内容(应包括实验题目、实验要求、实验任务等)二、练习项目:1.定义point类,有坐标x,y两个成员变量,利用友元函数对point类重载“+”运算符,实现对坐标值的改变。具体要求如下:(1) 编写程序定义point类,在类中定义整型的私有
2、成员变量x,y;(2) 在类中定义两个友元函数,分别重载前置+和后置+;(3) 编写主函数测试。注意函数有无返回值的区别,以及返回值是否带有&应用符号。2.定义point类,有坐标x,y两个成员变量,利用运算符重载对point类重载“+”运算符,实现对坐标值的改变。具体要求如下:(1) 编写程序定义point类,在类中定义整型的私有成员变量x,y;(2) 定义成员函数point& operator+(); point operator+(int);以实现对point类重载“+”运算符,分别重载前置+和后置+;(3) 编写主函数测试。3.定义一个分数类,通过重载运算符实现分数的四则运算、求负运算
3、和赋值运算。其中,要求加法“+” 和减法“-”用友元函数实现重载,其他运算符用成员函数实现重载。4.编写程序,定义抽象基类container,由此派生出2个派生类球体类sphere,圆柱体类cylinder,分别用虚函数分别计算表面积和体积。(1) 球体的表面积为:,球体的体积为; (2) 圆柱表面积为: 2r(h+r) 圆柱体的体积r2h。定义相应的对象,编写主函数测试。5.设计一个时钟类time,内含数据成员hour,minute,second表示时间,成员函数set( )设置时间数据,show( )显示时间数据。重载运算符 +和- (具有返回值),每执行一次+,second自增1,执行一
4、次-,second自减1。second和minute的值在059区间循环(满59后再自增则归0,minute加1;second为0时再自减则为59,minute减1)。hour的值在023区间循环。实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)1. 源代码:#include using namespace std;class pointprivate:double x,y;public:point(double _x=0,double _y=0)x=_x;y=_y;point()void setx(double _x)x=_x;void sety(double _y)y=_
5、y;double getx()return x;double gety()return y;friend void operator(ostream &out,const point &p)outpoint(p.x,p.y)n;friend void operator+(point &p,int);friend void operator+(point &p);void operator+(point &p,int)p.x+;p.y+;void operator+(point &p)+p.x;+p.y;int main()point a(1,1),b(3,4);couta;coutb;a+;+
6、b;couta;coutb;return 0;输出结果:2.源代码:#include using namespace std;class pointprivate:double x,y;public:point(double _x=0,double _y=0)x=_x;y=_y;point()void setx(double _x)x=_x; void sety(double _y)y=_y;double getx()return x;double gety()return y;friend void operator(ostream &out,const point &p)outpoint(
7、p.x,p.y)n; point operator+(int)x+=2; y+=2;return *this; point &operator+()+x;+y;return *this;int main()point a(1,1),b(3,4);couta;coutb;a+;+b;couta;coutb;return 0;输出结果:3.源代码:#include #include class fenshuprivate:int zi;int mu;public:fenshu(int _zi=0,int _mu=1)zi=_zi;mu=_mu;fenshu()void setzi(int _zi=
8、0)zi=_zi;void setmu(int _mu=1)mu=_mu;int getzi()return zi;int getmu()return mu;void print();friend fenshu operator+(const fenshu& f1,const fenshu& f2);friend fenshu operator-(const fenshu& f1,const fenshu& f2);fenshu operator*(int n )fenshu x;x.zi=zi*n;x.mu=mu;return x;fenshu operator/(int n)if(n=0)
9、 coutnagetive!;return *this;fenshu x;x.zi=zi;x.mu=mu*n;return x;fenshu operator-()fenshu x;x.zi=-zi;x.mu=mu;return x;void operator=(const fenshu & f)zi=f.zi;mu=f.mu;fenshu operator+(const fenshu& f1,const fenshu& f2)fenshu f;f.zi=f1.zi*f2.mu+f2.zi*f1.mu;f.mu=f1.mu*f2.mu;return f;fenshu operator-(con
10、st fenshu& f1,const fenshu& f2)fenshu f;f.zi=f1.zi*f2.mu-f2.zi*f1.mu;f.mu=f1.mu*f2.mu;return f;void fenshu:print()if(zi=0)cout0mu?zi:mu),_mu=abs(mu_mu?_mu:_zi);mu/=(_zi_mu?_mu:_zi);coutzi/muendl;int main()fenshu x(2,4),y(4,4);fenshu z,a,b,c,d,e;z=x+y;a=y-x;b=x-y; c=-x;d=y*(-1);e=y/2;z.print();a.prin
11、t();b.print();c.print();d.print();e.print();return 0;输出结果:4.源代码:#include using namespace std;const double pi=3.14;class containerprivate:double r;double h;public:container()container(double _r=0.0,double _h=0.0)r=_r;h=_h;void setr(double _r=0.0)r=_r;double getr()return r;void seth(double _h=0.0)h=_h
12、;double geth()return h;virtual double s()=0;virtual double v()=0;class sphere:public containerpublic:sphere()sphere(double _r=0.0):container(_r)double s()return 4*pi*getr()*getr();double v()return (double(4)/3)*pi*getr()*getr()*getr();class cylinder:public containerpublic:cylinder()cylinder(double _
13、r=0.0,double _h=0.0):container(_r,_h)double s()return 2*pi*getr()*(geth()+getr();double v()return 2*pi*getr()*geth();int main()container *p; sphere a(1); cylinder b(1,2);p=&a;coutsphere s=s() v=v()endl;p=&b;coutcylinder s=s() v=v()endl;return 0;输出结果:5.源代码:#include using namespace std;class timepriva
14、te:int hour;int minute;int second;public:time(int=0,int=0,int=0);time()void sethour(int);void setminute(int);void setsecond(int);int gethour();int getsecond();int getminute();void set(int=0,int=0,int=0);void show(); time& operator+(int);time& operator-(int);time:time(int h,int m,int s) if(s59)s%=60;
15、m=m+s/60;if(m59) m%=60;h=h+m /60;if(h23) h%=24;hour=h;minute=m;second=s;void time:sethour(int h)if(h23) h%=24;hour=h;void time:setminute(int m)if(minute59) minute%=60;hour=hour+minute/60;if(hour23) hour%=24;minute=m;void time:setsecond(int s) if(s59)minute=minute+s/60;s%=60;if(minute59) hour=hour+mi
16、nute/60;minute%=60;if(hour23) hour%=24;second=s;int time:gethour()return hour;int time:getsecond()return second;int time:getminute()return minute;void time:set(int h,int m,int s)if(s59)m=m+s/60;s%=60;if(m59) h=h+m /60;m%=60;if(h23) h%=24;hour=h;minute=m;second=s;void time:show()couthour:minute:secon
17、d59)minute=minute+second/60;second%=60;if(minute59) hour=hour+minute /60;minute%=60;if(hour23) hour%=24;return *this;time& time:operator-(int)second-;if(second0)minute-;second=59;if(minute0)minute=59;hour-;if(hour0)hour=0;return *this;int main()time t;int x,y,z;char temp;coutx;ciny;cinz;t.set(x,y,z)
18、;cout现在时间是:;t.show();docout输入*重新设置计数器;endl;cout输入+计数器递加,输入-计数器递减;endl;cout输入字母o计数器清零;endl;cout输入q退出计数器。endl;cout;cintemp;switch(temp)case *:coutx;ciny;cinz;t.set(x,y,z);cout现在时间是:;t.show();break;case +:t+;cout现在时间是:;t.show();break;case -:t-;cout现在时间是:;t.show();break;case o:t.set(0,0,0);cout现在时间是:;t.
19、show();break;case q:break;default:cout请输入正确的数据!getname()=sub_m-getname()*sub=*sub_m;sub_m+;sub_m-=num_m;sub+;sub-=shumu;void cstudent:insert_s() /录入分数int temp;coutplease input the scores.n;for(int i=0;ishumu;i+)coutgetname():temp;sub-setscore(temp);sub+;sub-=shumu;void cstudent:dill()int sum=0;doubl
20、e c=0.0,s=0.0;for(int i=0;igetscore()=95 & sub-getscore()setpoint(4.5);else if(sub-getscore()=90 & sub-getscore()setpoint(4.0);else if(sub-getscore()=85 & sub-getscore()setpoint(3.5);else if(sub-getscore()=80 & sub-getscore()setpoint(3.0);else if(sub-getscore()=75 & sub-getscore()setpoint(2.5);else if(sub-getscore()=70 & sub-getscore()setpoint(2.0);else if(sub-getscore()=65 & sub-getscore()setpoint(1.5);else if(sub-getscore()=60 & sub-getscore()setpoint(1.0);else sub-setpoint(0.0);sub-setflag(true);sum=sum+sub-getscore();c=c+sub-getxuefen()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 算力租赁计费管理制度
- 输电线路复合绝缘子安装施工指导手册
- 初中英语七年级上册 Unit 5 Fantastic Friends 单元起始与理解课教案
- 小学英语一年级上册 Unit 3 Lesson 3 游戏与歌曲融合创新教案
- 市政工程旁站监理方案
- 市政照明工程竣工资料编制方案
- 医用电气设备 第2-52部分成人医用床基本安全和基本性能的特殊要求标准立项发展报告
- 城市内涝监测预警与防洪调度技术方案
- 腹膜透析护理查房腹膜炎
- 人工气道吸痰的相关护理
- 电子行业深度报告:AI集群扩张下的光模块电芯片国产化机遇-DSP、TIA、Driver
- 儿童早期财商教育市场需求与课程设计
- 2026年广东广州越秀区社区专职工作人员招聘考试试卷-含答案解析
- 2026年上海高考英语(秋考)完整真题(考生回忆版)+ 参考答案与解析
- 中小型会计师事务所基础性标准体系制度指南-风险管理制度(2025版)
- 2026年及未来5年市场数据中国成都市酒店市场运行现状及行业发展趋势预测报告
- 冲压车间模具寿命管理办法
- 《中国成人ICU镇痛和镇静治疗指南(2025版)解读》
- 虎扑行业分析报告
- 2026年省精神卫生中心招聘考试笔试试题(含答案)
- 2026年及未来5年市场数据中国城市客运行业市场发展现状及市场前景预测报告
评论
0/150
提交评论