题解 | #日期累加#
日期累加
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(); } }