用C++写 求三天以后是哪天 输入描述 三个正整数a、b、c,表示今天是a年b月c日,可以确保该天是合法存在的。 输出描述 三个数字x y z,表示输入时间的三天以后是x年y月z日。每个数字之间用一个空格隔开,最后不要换行
时间: 2024-10-04 22:04:28 浏览: 35
在C++中,我们可以使用`<ctime>`库来处理日期运算。以下是一个简单的函数,用于求给定日期三天后的结果:
```cpp
#include <iostream>
#include <ctime>
void calculate_date(int a, int b, int c) {
// 获取当前时间的tm结构体
tm today = {0};
today.tm_year = a - 1900; // 减去1900是因为tm_year从0开始计数
today.tm_mon = b - 1; // 月份从0开始计数
today.tm_mday = c;
// 使用localtime函数将系统时间转为tm结构体
struct tm* new_date = localtime(&today);
// 加上3天
new_date->tm_mday += 3;
// 跳过闰年的2月29日
if ((new_date->tm_mon == 1 && new_date->tm_mday > 28) || (new_date->tm_mon == 2 && new_date->tm_mday > 29)) {
if (is_leap_year(new_date->tm_year + 1900)) {
--new_date->tm_mday;
}
}
// 将tm结构体转换回字符串
char buffer[20];
strftime(buffer, sizeof(buffer), "%Y %m %d", new_date);
// 输出结果
std::cout << buffer << std::endl;
}
bool is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int a, b, c;
std::cout << "Enter today's date (YYYY MM DD): ";
std::cin >> a >> b >> c;
calculate_date(a, b, c);
return 0;
}
```
在这个程序中,我们先获取今天的日期,然后加上三天,并根据实际的月份和日期判断是否需要调整(如闰年的2月)。然后我们将结果转换回字符串格式输出。
阅读全文