高等程序设计实验报告精品推荐.pdf

上传人:1398****507 文档编号:78038972 上传时间:2023-03-17 格式:PDF 页数:40 大小:1.17MB
返回 下载 相关 举报
高等程序设计实验报告精品推荐.pdf_第1页
第1页 / 共40页
高等程序设计实验报告精品推荐.pdf_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《高等程序设计实验报告精品推荐.pdf》由会员分享,可在线阅读,更多相关《高等程序设计实验报告精品推荐.pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、高等程序设计实验报告 实验名称 实验 12 运算符重载(2)系 别 姓 名 学 号 班 级 实验时间 实验地点 实验成绩 一、实验目的及要求 进一步理解运算符重载,运用成员函数和友元函数等方法实现运算符的重载。二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)硬件设备:联网的个人计算机 操作系统:Windows xp 编译系统:Dev C+三、实验内容及步骤(包含简要的实验步骤流程)1、重载函数调用运算符(),将以下的二维数组的下标表示方法:chessBoardrowcolumn改为常用的表示方法:chessBoard(row,column)2、重载下标运算符使之返回集合中最大

2、的元素、次最大的元素以及第三大的元素。3、开发多项式类 Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x4的指数为 4,系数为 2。请开发一个完整的 Polynomial 类,包括构造函数、析构函数以及get函数和set函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数):1)重载加法运算符+,将两个多项式相加;2)重载减法运算符-,将两个多项式相减;3)重载赋值运算符=,将一个多项式赋给另外一个多项式;4)重载乘法算符*,将两个多项式相乘;5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。4设计一个日期类 Date,,要求

3、:(1)包含年(year)、月(month)和日(day)私有数据成员。(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符等。提示:由于各 C+编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:void SetYear(int y);/设置年 int SetMonth(int m);/设置月 int SetDay(int d);/设置日 int GetYear()const;/返回年 int GetMonth()const;/

4、返回月 int GetDay()const;/返回日 static int IsLeapyear(int y);/判断年份 y 是否为润年 static int GetDays(int y);/年份 y 的天数 static int GetDays(const Date&d);/日期 d 当前月份的天数 static int DateToNum(const Date&d);/返回从公元 1 年 1 月 1 日起的天数 static Date NumToDate(int n);/由从公元 1 年 1 月 1 日起的天数返回日期 润年条件:年份能被 4 整除,并且年份不能被 100 整除,或者年份

5、能被 400 整除 润年天数:366 平年天数:365 润年 2 月份天数:29 平年 2 月份天数:28 5设计一个时间类 Time,要求:(1)包含时(hour)、分(minute)和秒(second)私有数据成员。(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符等。提示:可仿照第 4 题编程实现,可将时间转换成秒数,将秒数转成时间进行辅助编程。时间转换成秒数:秒数=时*3600+分*60+秒 秒数转换成时间:时=秒数/3600 分=(秒数-时*3600)/60 秒=秒数%60 为编程更方便,可增加一些成员函数,比如:v

6、oid SetHour(int hh);/设置小时 void SetMinute(int mm);/设置分钟 void SetSecond(int ss);/设置秒 int GetHour()const;/返回小时 int GetMinute()const;/返回分钟 int GetSecond()const;/返回秒 四、实验结果(包括程序或图表、结论陈述、数据记录及分析等,可附页)1、重载函数调用运算符(),将以下的二维数组的下标表示方法:chessBoardrowcolumn改为常用的表示方法:chessBoard(row,column)代码实现:#include#include usi

7、ng namespace std;class shuzu int chessBoard88;public:shuzu()for(int i=0;i8;i+)for(int j=0;j8;j+)chessBoardij=i+j;int operator()(int a,int b)return chessBoardab;int main()shuzu a;cout输出(6,7)=a(6,7)endl;cout矩阵:endl;for(int i=0;i8;i+)for(int j=0;j8;j+)couta(i,j)t;coutendl;getch();return 0;结果截图:2、重载下标运算

8、符使之返回集合中最大的元素、次最大的元素以及第三大的元素。3、开发多项式类 Polynomial,多项式的每一项用数组表示,每项包含一个系数和一个指数。例如:2x4的指数为 4,系数为 2。请开发一个完整的 Polynomial 类,包括构造函数、析构函数以及get函数和set函数。该类还要提供下述重载的运算符(分别使用成员函数和友元函数):1)重载加法运算符+,将两个多项式相加;2)重载减法运算符-,将两个多项式相减;3)重载赋值运算符=,将一个多项式赋给另外一个多项式;4)重载乘法算符*,将两个多项式相乘;5)重载加法赋值运算符+=、减法赋值运算符-=以及乘法赋值运算符*=。代码实现:#i

9、nclude#include using namespace std;class J private:int a5;public:J(int s)for(int i=0;i5;i+)ai=si;void paixu()for(int i=0;i4;i+)for(int j=0;jaj+1)int temp=aj;aj=aj+1;aj+1=temp;int operator(int b)return ab;int main()int s5;cout请输入 5 个数:endl;for(int i=0;isi;J j(s);();cout 最 大 的 元 素、次 最 大 的 元 素 以 及 第 三

10、大 的 元 素 依 次 为:j4,j3,j2endl;getch();return 0;结果截图:4设计一个日期类 Date,,要求:(1)包含年(year)、月(month)和日(day)私有数据成员。(2)包含构造函数,重载关于一日期加上天数的加法运算符+、重载关于一日期减去天数的减加运算符-、重载输出运算符等。提示:由于各 C+编译器对于重载输入/出运算符为友元的兼容性都存在问题,最好重载输入/出运算符不声明为成员函数与友元函数,而声明一般函数,为编程更方便,可增加一些成员函数,比如:void SetYear(int y);/设置年 int SetMonth(int m);/设置月 in

11、t SetDay(int d);/设置日 int GetYear()const;/返回年 int GetMonth()const;/返回月 int GetDay()const;/返回日 static int IsLeapyear(int y);/判断年份 y 是否为润年 static int GetDays(int y);/年份 y 的天数 static int GetDays(const Date&d);/日期 d 当前月份的天数 static int DateToNum(const Date&d);/返回从公元 1 年 1 月 1 日起的天数 static Date NumToDate(i

12、nt n);/由从公元 1 年 1 月 1 日起的天数返回日期 润年条件:年份能被 4 整除,并且年份不能被 100 整除,或者年份能被 400 整除 润年天数:366 平年天数:365 润年 2 月份天数:29 平年 2 月份天数:28(1)程序实现#include#include class Date public:Date(int a=0,int b=0,int c=0);void Set_Date(int a,int b,int c);void Get_Date();Date operator+(int);Date operator-(int);friend ostream&opera

13、tor(istream&,Date&);private:int year,mounth,date,m;Date:Date(int a,int b,int c)year=a;mounth=b;date=c;m=1;void Date:Set_Date(int a,int b,int c)year=a;mounth=b;date=c;void Date:Get_Date()if(m=1)coutyear年mounth月date日endl;else cout刚才输入的天数不符合要求!28)m=0;return*this;else if(year%400=0)|(year%4=0)&(year%100

14、!=0)if(mounth=4)|(mounth=6)|(mounth=9)|(mounth=11)if(date+a)=30)date=date+a;else date=date+a-30;mounth+;else if(mounth=2)if(date+a)=29)date=date+a;else date=date+a;mounth+;/处理 2 月 else if(date+a)=31)date=date+a;else date=date+a-31;if(mounth=12)year+;mounth=1;else mounth+;else if(mounth=4)|(mounth=6)

15、|(mounth=9)|(mounth=11)if(date+a)=30)date=date+a;else date=date+a-30;mounth+;else if(mounth=2)if(date+a)=28)date=date+a;else date=date+a-28;mounth+;else if(date+a)28)m=0;return*this;else if(year%400=0)|(year%4=0)&(year%100!=0)if(mounth=5)|(mounth=7)|(mounth=10)|(mounth=12)if(date=a)date=date-a;else

16、date=date-a+30;mounth-;else if(mounth=3)if(date=a)date=date-a;else date=date-a+29;mounth-;else if(date=a)date=date-a;else date=date-a+31;if(mounth=1)year-;mounth=12;else mounth-;else if(mounth=5)|(mounth=7)|(mounth=10)|(mounth=12)if(date=a)date=date-a;else date=date-a+30;mounth-;else if(mounth=3)if(

17、date=a)date=date-a;else date=date-a+28;mounth-;else if(date=a)date=date-a;else date=date-a+31;if(mounth=1)year-;mounth=12;else mounth-;return*this;ostream&operator(ostream&output,Date&a)cout年月日(istream&input,Date&a)cout;cout;cout;return input;int main()Date a,b,c;int x,y,z;cout请输入第一个日期:endl;coutx;co

18、uty;coutz;(x,y,z);c=a;cout请输入第二个日期:b;cout请输入需要加上的天数:z;a=a+z;cout日期c加上z天得到的日期为:endl;();a=c;cout请输入需要减去的天数:z;cout日期b减去z天得到的日期为:endl;b=b-z;();getch();return 0;(2)结果截图 5设计一个时间类 Time,要求:(1)包含时(hour)、分(minute)和秒(second)私有数据成员。(2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载关于一时间减去另一时间的减加运算符-、重载输出运算符等。提示:可仿照第 4 题编程实现,可将时

19、间转换成秒数,将秒数转成时间进行辅助编程。时间转换成秒数:秒数=时*3600+分*60+秒 秒数转换成时间:时=秒数/3600 分=(秒数-时*3600)/60 秒=秒数%60 为编程更方便,可增加一些成员函数,比如:void SetHour(int hh);/设置小时 void SetMinute(int mm);/设置分钟 void SetSecond(int ss);/设置秒 int GetHour()const;/返回小时 int GetMinute()const;/返回分钟 int GetSecond()const;/返回秒 代码实现:#include#include using n

20、amespace std;class Time int hour,minute,second,sall;public:Time();Time operator+(Time a);Time operator-(Time a);Time operator(Time&a);void SetHour(int hh);/设置小时 void SetMinute(int mm);/设置分钟 void SetSecond(int ss);/设置秒 int GetHour()const;/返回小时 int GetMinute()const;/返回分钟 int GetSecond()const;/返回秒 int

21、GetSall()const;Time:Time()second=0;hour=0;minute=0;sall=0;Time Time:operator+(Time a)Time temp;=sall+;=3600;=*/60;=%60;return temp;Time Time:operator-(Time a)Time temp;=;=3600;=*/60;=%60;return temp;Time Time:operator(Time&a)=minute;=second;=hour;=sall;return a;void Time:SetHour(int hh)/设置小时 hour=hh

22、;void Time:SetMinute(int mm)/设置分钟 minute=mm;void Time:SetSecond(int ss)/设置秒 second=ss;sall=3600*hour+60*minute+second;int Time:GetHour()const /返回小时 return hour;int Time:GetMinute()const /返回分钟 return minute;int Time:GetSecond()const /返回秒 return second;int Time:GetSall()const return sall;int main()Tim

23、e t1,t2,t3,t4,t5,t6,t7,t8;int s1,s2,h1,h2,m1,m2;couth1m1s1;couth2m2s2;(h1);(m1);(s1);(h2);(m2);(s2);coutt1 时间为:()时()分()秒 endl;coutt1 时间为:()时()分()秒 t3;t4t2;coutt3:t3 时间为:()时()分()秒 endl;coutt4t2:t4 时间为:()时()分()秒=()t5=t1-t2;coutt5=t1-t2:t5 时间为:()时()分()秒 endl;else t5=t2-t1;coutt5=t2-t1:t5 时间为:()时()分()秒 endl;t6=t3+t4;coutt6=t3+t4:t6 时间为:()时()分()秒 endl;getch();return 0;结果截图:五、总结 1、注意函数之间的调用 2、注意模的使用 例如:时间的模为 60 年份的模为 366 或 265 月的模各不相同

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

当前位置:首页 > 应用文书 > 解决方案

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

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