输入一个日期(年月日),输出该日期的前一天。例如输入2024年3月2日,输出2024年3月1日用C语言实现。
时间: 2024-10-12 17:05:49 浏览: 22
在C语言中,我们可以创建一个结构体`Date`来表示日期,并编写一个函数`prev_day`来计算并返回前一天的日期。这里是一个简单的示例:
```c
#include <stdio.h>
// 定义日期结构体
typedef struct {
int year;
int month;
int day;
} Date;
// 函数来获取前一天的日期
Date prev_day(Date date) {
if (date.month == 1 && date.day == 1) { // 如果是一年的第一天
date.year--; // 减一年
date.month = 12; // 跳转到上一年的12月
date.day = 31; // 设置为上一年的最后一天
} else if (date.month == 2 && date.day == 29 && is_leap_year(date.year)) { // 如果是闰年的2月29日
date.month = 1; // 跳转到3月
date.day = 1; // 设置为3月1日
} else { // 其他月份,简单减一天
date.day--;
}
return date;
}
// 判断是否为闰年
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
Date input_date = {2024, 3, 2};
Date result = prev_day(input_date);
printf("Previous day: %d-%02d-%02d\n", result.year, result.month, result.day); // 输出结果
return 0;
}
```
在这个例子中,我们首先检查是否是新年的第一天,如果是,则需要调整年份和月份。然后检查如果是闰年的2月29日,同样需要调整。其他情况直接减一天即可。`is_leap_year`函数用于判断给定的年份是否为闰年。
阅读全文