为了计算小农一天内的工作时长,我们需要将输入的开始时间和结束时间转换为分钟数,然后计算它们之间的差值。最后,我们将这个差值转换回小时和分钟的格式进行输出。 以下是实现这一功能的C++代码: ```cpp #include <iostream> #include <iomanip> // for std::setw and std::setfill using namespace std; int main() { // 读取输入的时间 string startTime, endTime; cin >> startTime >> endTime; // 提取小时和分钟 int startHour = stoi(startTime.substr(0, 2)); int startMinute = stoi(startTime.substr(2, 2)); int endHour = stoi(endTime.substr(0, 2)); int endMinute = stoi(endTime.substr(2, 2)); // 将时间转换为总分钟数 int startTotalMinutes = startHour * 60 + startMinute; int endTotalMinutes = endHour * 60 + endMinute; // 计算工作时长(以分钟为单位) int workMinutes = endTotalMinutes - startTotalMinutes; // 将工作时长转换回小时和分钟 int workHours = workMinutes / 60; int remainingMinutes = workMinutes % 60; // 格式化输出 cout << setw(2) << setfill('0') << workHours << ":" << setw(2) << setfill('0') << remainingMinutes << endl; return 0; } ``` ### 代码说明: 1. **输入读取**:使用`cin`读取输入的两个时间字符串。 2. **时间解析**:通过`substr`方法提取小时和分钟部分,并使用`stoi`将其转换为整数。 3. **时间转换**:将小时和分钟转换为总分钟数,以便进行简单的减法运算。 4. **计算工作时长**:计算两个时间点之间的差值,得到工作时长的总分钟数。 5. **转换回小时和分钟**:将总分钟数转换回小时和分钟。 6. **格式化输出**:使用`setw`和`setfill`确保输出格式为两位数,前置补零。 ### 测试用例: - **测试输入1**: `0900 1130` - **预期输出1**: `02:30` - **测试输入2**: `1201 1530` - **预期输出2**: `03:29` 这段代码能够正确处理给定的输入格式,并输出符合要求的结果。 [2024-11-30 09:43:25 | AI写代码神器 | 642点数解答]