C语言解决题目描述 输入一个日期,计算这个日期前一天和后一天的日期。 输入 输入三个整数 y,m,d � , � , � 分别表示年月日 (1000≤y≤3000,1≤m≤12, ( 1000 ≤ � ≤ 3000 , 1 ≤ � ≤ 12 , 日期必合法) ) 。 输出 第一行输出三个用空格分隔的整数,表示前一天的年月日。 第二行输出三个用空格分隔的整数,表示后一天的年月日。
时间: 2024-01-17 07:05:26 浏览: 163
好的,这是一个比较简单的题目,我们可以按照以下步骤解决:
1. 判断输入的日期是否合法,即年份、月份、日期是否符合要求。
2. 根据输入的日期计算出前一天和后一天的日期。
3. 输出前一天和后一天的日期。
以下是代码实现:
```c
#include <stdio.h>
int main() {
int y, m, d; // 年、月、日
scanf("%d%d%d", &y, &m, &d);
// 判断输入的日期是否合法
if (y < 1000 || y > 3000 || m < 1 || m > 12 || d < 1 || d > 31) {
printf("输入的日期不合法\n");
return 0;
}
// 计算前一天的日期
int pre_y = y, pre_m = m, pre_d = d - 1;
if (pre_d < 1) {
pre_m--;
if (pre_m < 1) {
pre_y--;
pre_m = 12;
}
if (pre_m == 2) {
if (pre_y % 4 == 0 && pre_y % 100 != 0 || pre_y % 400 == 0) {
pre_d = 29;
} else {
pre_d = 28;
}
} else if (pre_m == 4 || pre_m == 6 || pre_m == 9 || pre_m == 11) {
pre_d = 30;
} else {
pre_d = 31;
}
}
printf("%d %d %d\n", pre_y, pre_m, pre_d);
// 计算后一天的日期
int next_y = y, next_m = m, next_d = d + 1;
if (next_d > 31) {
next_m++;
if (next_m > 12) {
next_y++;
next_m = 1;
}
if (next_m == 2) {
if (next_y % 4 == 0 && next_y % 100 != 0 || next_y % 400 == 0) {
next_d = 29;
} else {
next_d = 28;
}
} else if (next_m == 4 || next_m == 6 || next_m == 9 || next_m == 11) {
next_d = 30;
} else {
next_d = 31;
}
}
printf("%d %d %d\n", next_y, next_m, next_d);
return 0;
}
```
以上代码可以计算出输入日期的前一天和后一天的日期,如果输入的日期不合法,则会输出提示信息。
阅读全文