题解 | #打印日期#
打印日期
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")