
这道题目依旧是A+B的题目只不过从数的相加变为了时间的相加,这就意味这分和秒必须满足60进1的规则,我们可以用三个变量CH,CM,CS来存储答案,从秒开始计算,我们很自然的想到可以用if语句来判断AS+BS是否大于60,再根据判断结果来决定是否进位,并最终决定CS和CM的值,简约的代码实现如下
if (AS+BS>=60)
{
CS = (AS+BS)-60;//CS的具体值
CH += 1;//CH的进位
}else{
CS = AS+BS
}对待CH的操作也一样,不过我们还有一条道路,我们可以利用C++的取余和整除来更简洁的实现,当AS+BS大于60时,对AS+BS取余的结果等价于AS+BS-60,对AS+BS整除的结果为1,当AS+BS小于60时,对AS+BS取余的结果等价于AS+BS,对AS+BS整除的结果为0,所以我们只需要让CS等于AS+BS取余,CH在加上一个AS+BS的整除,就可以不用写if语句,CH,CM的计算同理
#include <iostream>
using namespace std;
int main() {
int n;
int AH, AM, AS, BH, BM, BS;
int CH, CM, CS;
while (cin >> n)
{
for (int i = 0; i < n; i++) {
cin >> AH >> AM >> AS >> BH >> BM >> BS;
CS = (AS + BS)%60;
CM = (AM + BM + ((AS + BS) / 60)) % 60;
CH = (AH + BH + ((AM + BM + ((AS + BS) / 60)) / 60));
cout << CH << " " << CM << " " << CS << endl;
}
}
}