有一个“日期推算”程序,该程序的功能是输入一个日期,输出该日期前一天的日期,例如输入2024年3月15日,则输出2024年3月14日。用c语言编写出此程序
时间: 2024-10-12 19:04:51 浏览: 7
在C语言中,我们可以创建一个简单的函数来实现这个日期推算程序。首先,我们需要包含必要的头文件,并定义结构体来存储日期信息。接下来,我们将编写函数`previousDate`接受一个日期作为输入,并返回前一天的日期。这里是一个基础版本的示例:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义日期结构体
typedef struct {
int year;
int month;
int day;
} Date;
// 检查给定年份是否为闰年
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 函数:获取前一天日期
Date previousDate(Date date) {
// 如果已经是1月1日,则往前一年
if (date.month == 1 && date.day == 1) {
date.year--;
date.month = 12;
date.day = 31;
} else {
// 其他情况下,只减去一天
date.day--;
}
// 如果是闰年的2月,确保不超过28日
if (isLeapYear(date.year) && date.month == 2) {
if (date.day > 28) {
date.day = 28;
}
} else if (date.month == 2) {
if (date.day > 29) {
date.day = 29; // 对于非闰年,2月只有28天
}
}
return date;
}
int main() {
// 示例输入
Date input_date = {2024, 3, 15};
// 推算前一天
Date result = previousDate(input_date);
printf("输入日期: %d-%02d-%02d\n", result.year, result.month, result.day);
return 0;
}
```
这个程序会处理基本的日期推算逻辑,包括闰年和平年的不同处理。然而,它并未包含上述所有详细的测试用例,实际运行时还需要更全面的测试以确保其准确性和鲁棒性。