题目是:
第一种格式表示该航班在当地时间h1时m1分s1秒起飞,在当地时间当日h2时m2分s2秒降落。
第二种格式表示该航班在当地时间h1时m1分s1秒起飞,在当地时间次日h2时m2分s2秒降落。
第三种格式表示该航班在当地时间h1时m1分s1秒起飞,在当地时间第三日h2时m2分s2秒降落。
一开始对这个当地时间有疑惑,不知道每种格式的第一个当地时间是起飞地的当地时间,降落时的降落时间不清楚是起飞地的还是目的地的。
这时可以看测试用例计算解除疑惑。
输入有时有 (+1)有时没有,这时用scanf
scanf("%d(+%d)%d", &a, &b, &c);
对于空白字符:空格、tab、回车等,scanf将忽略输入字符串的空白字符,
直到下一个非空白字符,(并回放该非空白字符),
若该非空白字符与格式化字符串匹配,则读入(例如:scanf("%d(+%d)%d", &a, &b, &c) 若输入1(+2)3则可以读入)
若该非空白字符与格式化字符串不匹配,则结束此次读取,
并将该非空白字符回存到缓存中,在下一次读取函数被调用时读取(如scanf、getchar等)
或者sscanf()
`
int get_time()
{
string line;
getline(cin, line);
//保持一致:
if (line.back() != ‘)’) line += “(+0)”;
//把字符串中的数字信息读入到变量之中
int h1, m1, s1, h2, m2, s2, d;
sscanf(line.c_str(), “%d:%d:%d %d:%d:%d (+%d)”, &h1, &m1, &s1, &h2, &m2, &s2, &d);
return get_seconds(h2, m2, s2) - get_seconds(h1, m1, s1) + d * 24 * 3600;
}
`