描述 给定一个日期,请输出这个日期的下一天。 输入 一行,三个正整数:年、月、日,用空格分开 保证年份是4位数 输出 一行,年、月、日,用空格分开,c语言实现
时间: 2024-10-05 21:02:29 浏览: 41
描述:
编写一个简单的C语言函数,接收输入的年、月和日作为整数,计算并返回给定日期的下一天。函数应该考虑月份天数的变化(如二月有28或29天),以及闰年的规则。输出结果也是按照“年 月 日”的格式。
输入样例:
```
2023 2 28
```
输出样例:
```
2023 2 29
```
C语言实现示例:
```c
#include <stdio.h>
// 检查是否是闰年
int is_leap_year(int year) {
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
// 计算下一个月的天数
int days_in_month(int month, int year) {
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
if(is_leap_year(year)) {
return 29;
} else {
return 28;
}
default:
return -1; // 非法月份数
}
}
// 下一天的日期
void next_day(int *year, int *month, int *day) {
(*day)++;
if ((*day) > days_in_month(*month, *year)) { // 如果当天超过当月天数
*day = 1; // 将日子置为1
if (*month == 12) { // 如果是最后一个月,进入下一年
*month = 1;
(*year)++;
} else { // 否则,加一月
*month++;
}
}
}
int main() {
int year, month, day;
scanf("%d %d %d", &year, &month, &day);
next_day(&year, &month, &day);
printf("%d %d %d\n", year, month, day); // 输出下一天的日期
return 0;
}
```
阅读全文