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

京公网安备 11010502036488号