C语言实现 NextDate 程序:计算输入日期的下一天
下面是一个用 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 日等。如果需要处理更复杂的日期逻辑,请根据实际需求进行修改。
原文地址: https://www.cveoy.top/t/topic/bUwa 著作权归作者所有。请勿转载和采集!