用c语言写输入三个整数 y,m,d 分别表示年月日( 1000 ≤ y ≤ 3000 , 1 ≤ m ≤ 12 , 日期必合法) ) 。 第一行输出三个用空格分隔的整数,表示前一天的年月日。 第二行输出三个用空格分隔的整数,表示后一天的年月日。
时间: 2024-03-14 15:43:47 浏览: 119
c语言输入年月日且能防止错误输入
要求输入一个日期,并且输出前一天和后一天的日期,需要用到C语言中的日期和时间函数库time.h。具体的代码如下:
```c
#include <stdio.h>
#include <time.h>
int main() {
int year, month, day;
scanf("%d%d%d", &year, &month, &day);
// 将日期转换成time_t格式
struct tm t = {0};
t.tm_year = year - 1900;
t.tm_mon = month - 1;
t.tm_mday = day;
time_t now = mktime(&t);
// 计算前一天的日期
now -= 24 * 60 * 60;
struct tm *t1 = localtime(&now);
printf("%d %d %d\n", t1->tm_year+1900, t1->tm_mon+1, t1->tm_mday);
// 计算后一天的日期
now += 2 * 24 * 60 * 60;
struct tm *t2 = localtime(&now);
printf("%d %d %d\n", t2->tm_year+1900, t2->tm_mon+1, t2->tm_mday);
return 0;
}
```
运行程序,输入日期,例如:
```
2021 12 3
```
输出前一天和后一天的日期,例如:
```
2021 12 2
2021 12 4
```
需要注意的是,这里的日期格式是年 月 日,其中年份需要减去1900,月份需要减去1。在计算前一天和后一天的日期时,需要将日期转换成time_t格式,并且加上或减去相应的秒数。最后再将time_t格式转换成struct tm格式,并且输出日期。
阅读全文