C语言 从键盘输入一个日期,输出第二天的日期
时间: 2024-12-02 14:16:26 浏览: 23
在C语言中,你可以通过`<stdio.h>`库提供的功能来实现这个任务。首先,你需要读取用户的输入日期,然后计算出第二天。这里是一个简单的示例:
```c
#include <stdio.h>
#include <time.h>
#define DAY_IN_SECONDS (24 * 60 * 60) //一天的秒数
void print_next_day(int input_year, int input_month, int input_day) {
struct tm date;
time_t current_time;
// 设置当前时间作为基础
time(¤t_time);
localtime_s(&date, ¤t_time);
// 更新日期信息
date.tm_year = input_year - 1900; // 使用年份减去1900修正
date.tm_mon = input_month - 1; // 月份从0开始计数
date.tm_mday = input_day;
// 加上一天的秒数
date.tm_mday += 1;
// 如果超过当月的最大天数,自动跳到下一个月
if (date.tm_mday > days_in_month(input_year, input_month)) {
date.tm_mday -= days_in_month(input_year, input_month);
date.tm_mon++;
}
// 转换回时间戳并打印
time_t next_date = mktime(&date);
printf("明天的日期是: %d-%02d-%02d\n", date.tm_year + 1900, date.tm_mon + 1, date.tm_mday);
}
// 辅助函数获取给定年月的最大天数
int days_in_month(int year, int month) {
return month == 2 && is_leap_year(year) ? 29 : month == 2 ? 28 : (month == 4 || month == 6 || month == 9 || month == 11) ? 30 : 31;
}
// 判断是否是闰年
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int year, month, day;
printf("请输入日期(格式:YYYY-MM-DD): ");
scanf("%d-%d-%d", &year, &month, &day);
print_next_day(year, month, day);
return 0;
}
```
这个程序会提示用户输入一个日期,然后根据提供的函数计算并打印出第二天的日期。注意,此代码假设用户输入的是有效格式,并没有进行错误检查,实际应用中需要增加适当的验证。
阅读全文