输入一个日期,计算这个日期前一天和后一天的日期。 输入 输入三个整数 y,m,d�,�,� 分别表示年月日 (1000≤y≤3000,1≤m≤12,(1000≤�≤3000,1≤�≤12, 日期必合法))。 输出 第一行输出三个用空格分隔的整数,表示前一天的年月日。 第二行输出三个用空格分隔的整数,表示后一天的年月日。
时间: 2024-03-22 09:40:14 浏览: 65
C语言输入一个整数序列并计算他们的值.rar_C语言输入一个整数序列并计算他们的值_输入序列C语言
5星 · 资源好评率100%
好的,根据您的要求,以下是对应的 C 语言代码:
```c
#include <stdio.h>
int main() {
int year, month, day;
printf("请输入一个日期(yyyy-mm-dd):");
scanf("%d-%d-%d", &year, &month, &day);
// 计算前一天日期
int prev_year = year, prev_month = month, prev_day = day - 1;
if (prev_day == 0) {
prev_month -= 1;
if (prev_month == 0) {
prev_year -= 1;
prev_month = 12;
}
if (prev_month == 4 || prev_month == 6 || prev_month == 9 || prev_month == 11) {
prev_day = 30;
} else if (prev_month == 2) {
if (prev_year % 4 == 0 && prev_year % 100 != 0 || prev_year % 400 == 0) {
prev_day = 29;
} else {
prev_day = 28;
}
} else {
prev_day = 31;
}
}
// 计算后一天日期
int next_year = year, next_month = month, next_day = day + 1;
if (next_month == 2) {
if (next_year % 4 == 0 && next_year % 100 != 0 || next_year % 400 == 0) {
if (next_day > 29) {
next_month += 1;
next_day = 1;
}
} else {
if (next_day > 28) {
next_month += 1;
next_day = 1;
}
}
} else if (next_month == 4 || next_month == 6 || next_month == 9 || next_month == 11) {
if (next_day > 30) {
next_month += 1;
next_day = 1;
}
} else {
if (next_day > 31) {
next_month += 1;
next_day = 1;
if (next_month == 13) {
next_year += 1;
next_month = 1;
}
}
}
// 输出前一天和后一天日期
printf("%04d-%02d-%02d\n", prev_year, prev_month, prev_day);
printf("%04d-%02d-%02d\n", next_year, next_month, next_day);
return 0;
}
```
希望能够解决您的问题。
阅读全文