写一个日期类就可以了,不过我这个日期类没写全,够用就行
#include <iostream> using namespace std; class Date { public: Date(int year = 0, int month = 0, int day = 0) { _year = year; _month = month; _day = day; } bool operator>(const Date& d) const { if(this->_year > d._year) return true; else if(this->_year == d._year && this->_month > d._month) return true; else if(this->_year == d._year && this->_month == d._month && this->_day > d._day) return true; else return false; } bool operator==(const Date& d) const { if(this->_year == d._year && this->_month == d._month && this->_day == d._day) return true; else return false; } bool operator!=(const Date& d) const { return !(*this == d); } bool operator<(const Date& d) const { return !(*this > d || *this == d); } Date& operator-=(int day) { if(day < 0) { *this += -day; return *this; } _day -= day; while(_day <= 0) { _month--; if(_month == 0) { _month = 12; _year--; } _day += GetMonthDays(_year, _month); } return *this; } Date& operator+=(int day) { if(day < 0) { *this -= -day; return *this; } _day += day; while(_day > GetMonthDays(_year, _month)) { _day -= GetMonthDays(_year, _month); _month++; if(_month == 13) { _month = 1; _year++; } } return *this; } int GetMonthDays(int year, int month) { static int monthDays[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; else return monthDays[month]; } Date& operator++() { *this += 1; return *this; } int operator-(const Date& d) const { Date max = *this; Date min = d; int flag = 1; int cnt = 0; if(*this < d) { max = d; min = *this; flag = -1; } while(min != max) { ++cnt; ++min; } return cnt * flag; } int TheDayOfYear() { return (*this - Date(_year, 1, 1)) + 1; } private: int _year; int _month; int _day; }; int main() { int year, month, day; while (cin >> year >> month >> day) { Date d(year, month, day); cout << d.TheDayOfYear() << endl; } return 0; }