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