题解 | #打印日期#
打印日期
https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b
#include <iostream>
#include <iterator>
using namespace std;
class date
{
public:
int _year;
int _month;
int _day;
public:
date(int year=1999,int month=01 , int day =01)
{
this->_year = year;
this->_month = month;
this->_day = day;
}
date(const date& d2)
{
this->_year = d2._year;
this->_month = d2._month;
this->_day = d2._day;
}
int get_Month_day(int year, int month)
{
int month_day[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
if (month==2 && (year % 100 != 0 && year % 4 == 0)
|| year % 400 == 0)
{
month_day[2] = 29;
}
return month_day[month];
}
date& operator+=(int day)
{
_day = _day + day;
while (_day > get_Month_day(_year,_month))
{
_day = _day - get_Month_day(_year, _month);
++_month;
if (_month>12)
{
++_year;
_month = 01;
}
}
return *this;
}
void Print()
{
if(_month<10 && _day<10)
{
cout<<_year<<"-"<<0<<_month<<"-"<<0<<_day<<endl;
}
else if(_month<10 &&_day>=10)
{
cout<<_year<<"-"<<0<<_month<<"-"<<_day<<endl;
}
else if(_month>=10 &&_day<10)
{
cout<<_year<<"-"<<_month<<"-"<<0<<_day<<endl;
}
else {
cout<<_year<<"-"<<_month<<"-"<<_day<<endl;
}
}
};
int main() {
int a, b;
date d1;
while (cin >> a >> b) { // 注意 while 处理多个 case
d1._year = a;
while( b > 1 )
{
d1+=1;
--b;
}
}
d1.Print();
}
// 64 位输出请用 printf("%lld")