只给出年份和该年中的第几天,那就能不能理解为是 这一年的1月0日 + 天数
#include <iostream> using namespace std; static int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int GetMonthDays(int year, int month) { if(month == 2 && ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))) return days[month] + 1; return days[month]; } void DatePlusDays(int& year, int& month, int& day, int dd) { day += dd; while(day > GetMonthDays(year, month)) { day -= GetMonthDays(year, month); ++month; if(month == 13) { month = 1; ++year; } } } // 知道一年中的第几天就相当于是 (这一年的1月0日 + 天数) int main() { int year = 0, dd = 0; while(~scanf("%d %d", &year, &dd)) { int month = 1; int day = 0; DatePlusDays(year, month, day, dd); printf("%d-%02d-%02d\n", year, month, day); } return 0; }