题解 | #日期累加#

日期累加

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

#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 m = 0;
    scanf("%d", &m);

    while (m--) {
        int year, month, day, n;
        scanf("%d %d %d %d", &year, &month, &day, &n);

        // 增加n天
        day += n;

        // 循环直到天数小于一个月的天数
        while (day > GetMonthDay(year, month)) {
            int x = GetMonthDay(year, month);
            day -= x; // 减去一个月的天数
            month++; // 月份增加
            if (month == 13) { // 如果月份为13,说明已经到了下一年
                year++;
                month = 1; // 月份重置为1
            }
        }

        // 输出结果
        printf("%4d-%02d-%02d\n", year, month, day);
    }

    return 0;
}

在这段代码中,我们通过循环将给定日期加上额外的天数。比较给定日期加上天数后是否超过了当月的天数,如果超过了,就减去当月的天数,然后将月份加1。如果月份超过12,我们将年份加1,并将月份重置为1。

最后,我们使用printf函数按照格式"%4d-%02d-%02d"打印出结果,确保年份以4位数显示,月份和日期都以2位数显示,不足位数的前面补零。

全部评论

相关推荐

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