用c++设计一个程序用于向后推算指定日期经过n天后的具体日期。
时间: 2024-05-15 20:15:51 浏览: 73
C语言计算N天后的日期
5星 · 资源好评率100%
```c
#include <stdio.h>
struct Date {
int year;
int month;
int day;
};
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int getDaysOfMonth(int year, int month) {
int days;
switch (month) {
case 2:
days = isLeapYear(year) ? 29 : 28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
days = 31;
break;
}
return days;
}
struct Date addDays(struct Date date, int days) {
while (days > 0) {
int daysOfMonth = getDaysOfMonth(date.year, date.month);
if (days >= daysOfMonth - date.day + 1) {
days -= daysOfMonth - date.day + 1;
date.day = 1;
if (date.month == 12) {
date.year++;
date.month = 1;
} else {
date.month++;
}
} else {
date.day += days;
days = 0;
}
}
return date;
}
void printDate(struct Date date) {
printf("%d年%d月%d日\n", date.year, date.month, date.day);
}
int main() {
struct Date date = {2022, 11, 30};
int n = 15;
printf("原日期:");
printDate(date);
printf("向后推%d天后的日期:", n);
struct Date newDate = addDays(date, n);
printDate(newDate);
return 0;
}
```
运行结果:
```
原日期:2022年11月30日
向后推15天后的日期:2022年12月15日
```
阅读全文