用C语言,编写程序,输入年月日,输出该日期的前一天。
时间: 2024-10-12 22:07:52 浏览: 35
在C语言中,你可以通过计算减去一天来实现这个功能。下面是一个简单的示例程序,它会提示用户输入年、月、日,然后输出前一天的日期:
```c
#include <stdio.h>
int main() {
int year, month, day;
// 输入年份、月份和日期
printf("请输入年份: ");
scanf("%d", &year);
printf("请输入月份(1-12): ");
scanf("%d", &month);
printf("请输入日期(1-%d): ", days_in_month(year, month));
scanf("%d", &day);
// 减去一天
day--;
// 检查新的日期是否有效(闰年二月特殊情况)
if (month == 2 && is_leap_year(year)) {
if (day <= 28) {
printf("前一天的日期是:%04d-%02d-%02d\n", year, month, day);
} else {
day = 28; // 如果是闰年的2月29日,则变为28日
printf("前一天的日期是:%04d-%02d-%02d\n", year, month, day);
}
} else {
printf("前一天的日期是:%04d-%02d-%02d\n", year, month, day);
}
return 0;
}
// 辅助函数,用于判断给定年份是否为闰年
bool is_leap_year(int year) {
if (year % 4 != 0)
return false;
else if (year % 100 != 0)
return true;
else if (year % 400 != 0)
return false;
else
return true;
}
// 辅助函数,返回指定年份和月份的天数
int days_in_month(int year, int month) {
switch(month) {
case 2: return is_leap_year(year) ? 29 : 28;
case 4: case 6: case 9: case 11: return 30;
default: return 31;
}
}
```
当你运行这个程序并输入某个日期后,它会输出前一天的日期。请注意,这个程序假设用户输入的是合理的日期范围,并没有做太多的错误检查。
阅读全文