#include <iostream> using namespace std; int getse(int h, int m, int s) { return h * 3600 + m * 60 + s; } int gettime() { string line; getline(cin, line); if (line.back() != ')') line += "(+0)"; //判断末尾是否有异日情况 无则加上(+0)方便格式化算时间 int h1, h2, m1, m2, s1, s2, d; sscanf(line.c_str(), "%d:%d:%d %d:%d:%d (+%d)", &h1, &m1, &s1, &h2, &m2, &s2, &d); //c_str 放入string字符串 实际是string 到const char* 同时我们读入起降两个时间 和 day return getse(h2, m2, s2) - getse(h1, m1, s1) + d * 3600 * 24; } int main() { int n; cin >> n; getchar(); //吞掉int 与 string 中间的回车 while (n--) { int time = (gettime() + gettime()) / 2; printf("%02d:%02d:%02d\n", time / 3600, time % 3600 / 60, time % 60); //02d没有两位则用0补足 } return 0; }