题解 | #日期累加#
日期累加
https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d
#include <iostream>
using namespace std;
class Date {
public:
void Print()
{
printf("%d-%02d-%02d\n", _year, _month, _day);
}
int GetMonthDay(int year, int month)
{
int MonthDayArray[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
if ((month == 2) && ((year % 4 == 0) && (year % 100 != 0)
|| (year % 400 == 0)))
{
return 29;
}
return MonthDayArray[month];
}
Date &operator+= (int day)
{
_day += day;
while (_day > GetMonthDay(_year,_month))
{
_day -= GetMonthDay(_year, _month);
++_month;
if (_month == 13)
{
_year += 1;
_month = 1;
}
}
return *this;
}
Date(int year = 1,int month = 1,int day = 1)
:_year(year)
,_month(month)
,_day(day)
{}
private:
int _year;
int _month;
int _day;
};
int main()
{
int line = 0;
scanf("%d", &line);
int year = 0, month = 0, day = 0, AddDay = 0;
while( scanf("%d %d %d %d", &year, &month,&day,&AddDay) != EOF)
{
Date d1(year,month,day);
d1 += AddDay;
d1.Print();
}
}
查看10道真题和解析