题解 | #日期累加#
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <iostream>
using namespace std;
class Date
{
public:
Date(int year=199 , int month = 1,int day =1)
{
_year = year;
_month =month;
_day = day;
}
int getMonthday(int year , int month)
{
if(month == 2 &&(year%4==0
&&year%100!=0)||(year%400==0))
{
return 29;
}
return monthDay[month];
}
const Date& operator+=(int n)
{
_day = _day+n;
while(_day> getMonthday(_year , _month))
{
_day = _day - getMonthday(_year , _month);
++ _month;
if(_month == 13)
{
_month =1;
++_year;
}
}
return *this;
}
int _year;
int _month;
int _day;
int monthDay[13] ={0,31,28,31,30,31,30,
31,31,30,31,30,31};
};
int main() {
int m = 0 ;
cin>>m;
while(m > 0)
{
int year =0 ,month =0 , day =0;
int n =0;
cin>>year>>month>>day>>n;
Date d1(year,month,day);
d1+=n;
printf("%04d-%02d-%02d\n",d1._year,d1._month,d1._day);
--m;
}
return 0;
}
// 64 位输出请用 printf("%lld")