下面是一个用 C 语言编写的 NextDate 程序的示例:

#include <stdio.h>

int isLeapYear(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
        return 1; // 是闰年
    } else {
        return 0; // 不是闰年
    }
}

int isValidDate(int year, int month, int day) {
    if (year < 1912 || year > 2112) {
        return 0; // 年份不在范围内
    }

    if (month < 1 || month > 12) {
        return 0; // 月份不在范围内
    }

    int maxDay;
    switch (month) {
        case 2:
            if (isLeapYear(year)) {
                maxDay = 29;
            } else {
                maxDay = 28;
            }
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            maxDay = 30;
            break;
        default:
            maxDay = 31;
            break;
    }

    if (day < 1 || day > maxDay) {
        return 0; // 日期不在范围内
    }

    return 1; // 日期合法
}

void getNextDate(int *year, int *month, int *day) {
    if (*day < 28) {
        (*day)++;
    } else {
        switch (*month) {
            case 2:
                if (isLeapYear(*year) && *day == 28) {
                    (*day)++;
                } else {
                    *day = 1;
                    (*month)++;
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                if (*day == 30) {
                    *day = 1;
                    (*month)++;
                } else {
                    (*day)++;
                }
                break;
            default:
                if (*day == 31) {
                    *day = 1;
                    if (*month == 12) {
                        *month = 1;
                        (*year)++;
                    } else {
                        (*month)++;
                    }
                } else {
                    (*day)++;
                }
                break;
        }
    }
}

int main() {
    int year, month, day;

    printf("请输入年份(1912~2112):");
    scanf("%d", &year);

    printf("请输入月份(1~12):");
    scanf("%d", &month);

    printf("请输入日期(1~31):");
    scanf("%d", &day);

    if (isValidDate(year, month, day)) {
        getNextDate(&year, &month, &day);
        printf("输入日期的下一天是:%d年%d月%d日\n", year, month, day);
    } else {
        printf("输入的日期不合法!\n");
    }

    return 0;
}

此程序中定义了三个函数:

  • isLeapYear 函数用于判断是否为闰年;
  • isValidDate 函数用于验证输入的日期是否合法;
  • getNextDate 函数用于获取输入日期的下一天日期。

main 函数中,首先输入年份、月份和日期,然后通过 isValidDate 函数验证输入的日期是否合法。如果合法,则调用 getNextDate 函数获取输入日期的下一天日期,并输出结果;如果不合法,则输出错误信息。

请注意,此程序只处理了基本的日期逻辑,没有考虑特殊情况,如闰年 2 月 29 日等。如果需要处理更复杂的日期逻辑,请根据实际需求进行修改。

C语言实现 NextDate 程序:计算输入日期的下一天

原文地址: https://www.cveoy.top/t/topic/bUwa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录