#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int T, h, m;
double s;
char fu[20];
scanf("%d", &T);
while (T--)
{
scanf("%d %d ", &h, &m);
scanf("%s", fu);
sscanf(fu + 4, "%lf", &s);
int newh, newm;
newh = s / 1;
if (fu[3] == '+')
{
h += (newh - 8);
newm = (s - newh) * 60 + 0.01;
m += newm;
}
else
{
h = h - newh - 8;
newm = (s - newh) * 60 + 0.01;
m -= newm;
}
if (m >= 60)
{
m -= 60;
h++;
}
if (h >= 24)
{
h -= 24;
}
if (m<0)
{
m += 60;
h--;
}
if (h<0)
{
h += 24;
}
printf("%02d:%02d\n", h, m);
}
return 0;
}
总结:难点在输入问题,用sscanf(fu + 4, "%lf", &s);将输入的字符串转化成浮点数。