输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数 (00-23)和2位分钟数(00-59)、假设出发和到达在同一天内。 在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
时间: 2024-10-18 18:12:34 浏览: 64
要解决这个问题,你需要读取两个四位数的时间字符串,然后计算它们之间的差值。这里是一个简单的C++程序,它实现了这个功能:
```cpp
#include <iostream>
#include <sstream>
int main() {
// 输入两个时间字符串
std::string input;
std::getline(std::cin, input); // 获取一行输入
// 分割输入字符串为两部分
std::istringstream iss(input);
std::string time1, time2;
std::getline(iss, time1, ' '); // 获取第一个时间
std::getline(iss, time2); // 获取第二个时间
// 将时间字符串转换为小时和分钟
int hour1, min1, hour2, min2;
std::istringstream t1(time1.substr(0, 2)), t2(time2.substr(0, 2));
std::sscanf(t1.str().c_str(), "%d", &hour1);
std::sscanf(t1.str().c_str()+2, "%d", &min1);
std::sscanf(t2.str().c_str(), "%d", &hour2);
std::sscanf(t2.str().c_str()+2, "%d", &min2);
// 计算时间差(假设都在同一天)
int diff_hours = std::abs(hour2 - hour1);
if (hour2 < hour1) { // 如果到达时间早于出发时间,则加24小时
diff_hours += 24;
}
int diff_minutes = std::abs(min2 - min1);
if (diff_minutes >= 60) { // 如果分钟差超过60分钟,考虑小时
diff_hours++;
diff_minutes -= 60;
}
// 输出结果
std::ostringstream output;
output << std::setw(2) << diff_hours << ":" << std::setw(2) << diff_minutes;
std::cout << output.str() << std::endl;
return 0;
}
```
在这个程序中,我们首先从输入获取两个时间字符串,然后分割并提取小时和分钟。接着,我们计算小时和分钟的差值,如果需要的话,还会加上一天(24小时)。最后,我们将结果按照"hh:mm"的格式输出。
阅读全文