有一个“日期推算”程序,该程序的功能是输入一个日期,输出该日期前一天的日期,例如输入2024年3月15日,则输出2024年3月14日。日期中年份的有效取值范围为1989-2050。C++代码
时间: 2024-10-26 13:17:10 浏览: 17
你可以创建一个简单的C++函数来完成这个日期推算任务。这里是一个基本的例子:
```cpp
#include <iostream>
#include <ctime>
// 定义一个结构体表示日期
struct Date {
int year;
int month;
int day;
};
// 将字符串转换为Date对象
Date stringToDate(const std::string& date_str) {
std::istringstream iss(date_str);
iss >> year >> month >> day;
return {year, month, day};
}
// 计算前一天的日期
Date previousDay(Date d) {
// 减少day,如果已经是当月最后一天则减去一并更新month
if (d.day == 1) {
d.month--;
if (d.month <= 0) {
d.month = 1;
d.year--;
if (d.year < 1989 || d.year > 2050) {
throw std::invalid_argument("Invalid year range");
}
}
} else {
d.day--;
}
return d;
}
int main() {
try {
std::string input_date = "2024年03月15日";
Date input = stringToDate(input_date);
Date prev_day = previousDay(input);
std::cout << "Input date: " << input.year << '-' << input.month << '-' << input.day << '\n';
std::cout << "Previous day: " << prev_day.year << '-' << prev_day.month << '-' << prev_day.day << '\n';
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
在这个代码里,我们首先定义了一个`Date`结构体,并实现了将字符串转换成日期的函数`stringToDate`。接着,`previousDay`函数用于计算并返回前一天的日期,它会检查月份是否需要调整以及年份是否在有效范围内。在主函数中,我们读取用户输入的日期并打印出前一天的结果。
阅读全文