题解 | 打印日期

打印日期

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);

    }

}

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务