题解 | #打印日期#

打印日期

https://www.nowcoder.com/practice/b1f7a77416194fd3abd63737cdfcf82b

#include <stdio.h>

// 获取某年某月的天数
int GetMonthDay(int year, int month) {
    int monthArray[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    if (month == 2 && ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))) {
        return 29;
    }
    return monthArray[month];
}

int main() {
    int year, n;

    // 循环读取输入的年份和天数
    while (scanf("%d %d", &year, &n) != EOF) {
        int month = 0, day = 0;

        // 循环减去每个月的天数,直到剩余天数小于当前月的天数
        while (n > GetMonthDay(year, month)) {
            month++;
            n -= GetMonthDay(year, month);
        }

        // 剩余天数即为目标日期的天数
        day = n;
        month++;

        // 输出结果,确保年份以4位数显示,月份和日期都以2位数显示,不足位数的前面补零
        printf("%d-%02d-%02d\n", year, month, day);
    }

    return 0;
}

在这段代码中,我们通过循环将给定天数减去每个月的天数,直到剩余天数小于当前月的天数。在每次循环中,我们更新当前的月份和剩余天数。最后,我们使用printf函数按照格式"%d-%02d-%02d"打印出结果,确保年份以4位数显示,月份和日期都以2位数显示,不足位数的前面补零。代码中的循环可以处理多组输入,直到遇到 EOF(End of File)。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务