日期参数int型的构造函数_第1页
日期参数int型的构造函数_第2页
日期参数int型的构造函数_第3页
日期参数int型的构造函数_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include<iostream.h>class dateint year,month,day; public: date(int y,int m,int d) /日期参数int型的构造函数 year=y; month=m; day=d; date(char *s) /日期参数为字符串的构造函数 year=(int (s0)-48)*1000+(int (s1)-48)*100+(int (s2)-48)*10 +(int (s3)-48); /转化为数据成员年 month=(int (s4)-48)*10+(int (s5)-48);/转化为数据成员月 day=(int (s6

2、)-48)*10+(int (s7)-48); /转化为数据成员日 void input() /输入日期 cin>>year; cin>>month; cin>>day; void output() /输出日期 cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl; date nextdate() /计算下一日函数 int test13=0,31,28,31,30,31,30,31,

3、31,30,31,30,31;/平年每月的天数分布 int i=month; if(i=2&&(year%4=0&&year%100!=0)|(year%400=0) /月份为2月且是闰年 if(day=29) date a(year,3,1); return a; /刚好是最后一天,返回3月1日 else date a(year,2,day+1); return a; /否则返回日期加1 else if(i=12&&day=31) /若是最后一天就返回下年的第一天 date a(year+1,1,1); return a; else /其他情况

4、 if(day=testi) date a(year,i+1,1); return a; /刚好最后一天,返回下个月1日 else date a(year,i,day+1); return a; /否则返回日期加1 date pirrodate() /计算前一日函数 int test13=0,31,28,31,30,31,30,31,31,30,31,30,31;/平年每月天数分布 int i=month; if(i=3&&(year%4=0&&year%100!=0)|(year%400=0)/月份为三月且是闰年 if(day=1) date a(year,2

5、,29); return a; /刚好第一天,返回2月29日 else date a(year,3,day-1); return a; /否则返回日期减1 else if(i=1&&day=1) /若是第一天就返回上一年最后一天 date a(year-1,12,31); return a; else /不是闰年3月的情况 if(day=1) date a(year,i-1,testi-1); return a;/刚好第一天,返回前个月最后一天 else date a(year,i,day-1); return a; /否则返回日期减1 date dateafter(int d

6、) int test13=0,31,28,31,30,31,30,31,31,30,31,30,31;/平年每月天数分布 int m=month; int y=year; while(day+d>=28) /当日加上d日大于=28,要进行延伸分析 if(m=2) /2月份情况 if(y%4=0&&y%100!=0)|(year%400=0) /是闰年 if(day+d-29)>0) /日期加d减29天大于0,表明延伸到下个月 d=d-29; /d减29 m+; /月份加1 else break; else if(day+d-28)>0) /不是闰年 d=d-2

7、8; /d减28 m+; /月份加1 else break; else /其他月份情况 if(day+d-testm>0) /日期加d减当月天数大于0,表明延伸到下个月 d=d-testm; /d循环减当月天数 m+; /月份加1 else break; if(m>12) /月份超过12,表明延伸到下一年 m=m-12; y+; date a(y,m,d+day); /返回d天后日期 return a; date datebefore(int d) int test13=0,31,28,31,30,31,30,31,31,30,31,30,31;/平面每月天数分布 int m=mo

8、nth; int y=year; while(day-d)<=0) /日期减d小于0,要进行延伸分析 if(m=3) /3月分情况 if(y%4=0&&y%100!=0)|(year%400=0) /是闰年 d=d-29; /d减29 m-; /月份减1 else d=d-28; /不是闰年,d减28 m-; /月份减1 else /其他月份情况 d=d-testm; /d循环减当月天数 m-; /月份减1 if(m<=0) /月份小于0 ,表明要延伸到前一年 m=m+12; y-; date a(y,m,day-d); /返回d天前日期 return a; ;vo

9、id main()date t(0,0,0); date a("20071231"); /用字符串构造一个日期 a.output(); t=a.nextdate(); /下一日日期 cout<<"下一日:" t.output(); date c("20080101"); c.output(); t=c.pirrodate(); /前一日日期 cout<<"前一日:" t.output(); date b(0,0,0); cout<<"输入一个日期:"<<endl; /输入一个日期 b.input(); t=b.dateafter(90); /90天后日

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论