只给出年份和该年中的第几天,那就能不能理解为是 这一年的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;
}