以下是NextDate函数的例子,PreDate函数大家可以参照我给的该代码自行完成
// /* NextDate求下一天程序 */ /* */ /* Version: */ /* 2011.10.25 */ // #include <stdio.h> #include <iostream.h> class Date{ public: Date(int y = 0, int m = 0, int d = 0);//构造函数 ~Date(); //析构函数 void NextDate(); //输出当前日期的下一日 void PreDate(); //输出当前日期的前一日 bool IsLeapYear(int y); //判断是否为闰年 void show(); //输出日期,按照“****-**-**”格式输出 private: int year,month,day; //输入要求,年份[1800,2012],月份[1,12],日期[1,31],需要在输入过程做合法性校验 static int days[13]; int Checkdate(); }; Date::Date(int y,int m,int d) { year = y; month = m; day = d; } Date::~Date() {} //每个月最大天数数组,下标为0的闲置 int Date::days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; // //判断是否为闰年函数 //参数:year——输入年份 inline bool Date::IsLeapYear(int year) { return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0); } //日期合法性检查 //参数:year——年份;month——月份;day——天数 int Date::Checkdate() { if((year < 1812) || (year > 2012))//年份输入错误 return 1; if((month < 1) || (month > 12))//月份输入错误 return 2; if(month == 2 && IsLeapYear(year))//修改闰年二月份的最大天数为29 days[2] = 29; else days[2] = 28; if((day < 1) || (day > days[month]))//天数输入错误 return 3; return 0; } //求下一天函数 //参数:year——年份;month——月份;day——天数 void Date::NextDate() { int y = year,m = month,d = day; switch(Checkdate()) { case 1: cout<<"年份输入有误!"<<endl; return; case 2: cout<<"月份输入有误!"<<endl; return; case 3: cout<<"日期输入有误!"<<endl; return; } if(d == days[m]) //天数为每月最后一天 { if(m == 12) //月份为12月的情况 { y++; m = 1; d = 1; } else //非12月情况 { m++; d = 1; } } else//其他情况 d++; cout<<"Nextdate is:"<<y<<"-"<<m<<"-"<<d<<endl; return; } //主函数 void main() { int year,month,day; for(;;)//stop run until year is zero { cout<<"Please input the date:"<<endl; cin>>year>>month>>day; if(year == 0) break; Date obj(year,month,day); obj.NextDate(); } return; }