【问题描述】
设计一个程序用于向后推算指定日期经过n天后的具体日期。
【输入形式】
-
输入年月日和一个正整数n。
【输出形式】
-
当推算出的年份大于4位数时,输出"out of limitation!",否则输出具体的日期。
【样例输入1】
【样例输出1】
【样例输入2】
【样例输出2】
1945-8-15
【样例输入3】
【样例输入3】
out of limitation!
【样例说明】
-
输入都是正整数。
-
注意闰年和平年的2月份天数不同。
-
注意判断输出信息是否符合要求。
【评分标准】
#include <iostream>
using namespace std;
class Date
{
public:
Date()
{
cin>>y>>m>>d>>n;
}
int beLeapYear()
{
return ((y%4==0&&y%100!=0)||(y%400==0));
}
void addOneDay()
{
if((m==1||m==3||m==5||m==7||m==8||m==10)&&(d==31))
{
d=1;
m+=1;
}
else if((m==4||m==6||m==9||m==11)&&(d==30))
{
d=1;
m+=1;
}
else if(m==12&&d==31)
{
d=1;
m=1;
y+=1;
}
else if(m==2&&d==29&&beLeapYear())
{
d=1;
m+=1;
}
else if(m==2&&d==28&&!beLeapYear())
{
d=1;
m+=1;
}
else
{
d+=1;
}
}
void addDay()
{
int i;
for(i=1;i<=n;i++)
{
addOneDay();
}
if(y>9999)
{
cout<<"out of limitation!"<<endl;
}
else
{
showDate();
}
}
void showDate()
{
cout<<y<<"-"<<m<<"-"<<d<<endl;
}
private:
int y,m,d,n;
};
int main()
{
Date d;
d.addDay();
return 0;
}