题解 | 打印日期
打印日期
https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b
#include <stdio.h>
// 给出年分m和一年中的第n天,算出第n天是几月几号。 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
// NextDay, 已知某年某月某日,求该天的下一天是xx年xx日xx天
// 循环调用了多少次NextDay,count=n
// 2000 3 => 2000-01-03 首先确定该年份对应的每月有几天,3<31,月份=1;3%31=3
// 2000 31 =》
// 2000 40 =》 40>31, 月份加一,
void NextDay(int* year, int* month, int* day) {
int DayofMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ((*year % 400 == 0) || (*year % 4 == 0 && *year % 100 != 0)) {
DayofMonth[2] = 29;
}
*day = *day + 1;
if (*day > DayofMonth[*month]) {
*month = *month + 1;
*day = 1;
}
if (*month > 12) {
*year = *year + 1;
*month = 1;
}
}
int main() {
int y;
int n;
while (scanf("%d%d", &y, &n) != EOF) {
int curMonth = 1;
int curDay = 1;
int count = 1;
while (n != count) {
NextDay(&y, &curMonth, &curDay);
count += 1;
}
printf("%d-%02d-%02d", y, curMonth, curDay);
}
}

