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