m2++和h2++比m1--和h1--后判断为负数简单。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int N;
int i;
int h1,h2,m1,m2,s1,s2;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%d:%d:%d",&h1,&m1,&s1);
scanf("%d:%d:%d",&h2,&m2,&s2);
if(s1>=s2)
{
s1-=s2;
}
else
{
s1=s1+60-s2;
m2++;
}
if(m1>=m2)
{
m1-=m2;
}
else
{
m1+=60-m2;
h2++;
}
if(h1>=h2%12)
{
h1-=h2%12;
}
else
{
h1+=12-(h2%12);
}
printf("%02d:%02d:%02d\n",h1,m1,s1);
}
return 0;
}