代码如下
#include <bits/stdc++.h>
using namespace std;
int cnt = -1,t;
struct time
{
int id,h,m,s,ms,tn;
string c[105];
}a[105];
int main()
{
while(true)
{
int line = 1;
cnt += 2;
scanf("%d\n%d:%d:%d,%d --> ",&a[cnt].id,&a[cnt].h,&a[cnt].m,&a[cnt].s,&a[cnt].ms);
scanf("%d:%d:%d,%d",&a[cnt + 1].h,&a[cnt + 1].m,&a[cnt + 1].s,&a[cnt + 1].ms);
while(true)
{
string s;
getline(cin,s);
a[cnt].c[line] = s;
if(a[cnt].c[line].size() == 1 || a[cnt].c[line][0] == '#') break;
line++;
}
a[cnt].tn = line,a[cnt].tn -= 1;
if(a[cnt].c[line][0] == '#') break;
}
cnt++;
cin >> t;
if(t < 0)
{
t *= -1;
for(int i = 1;i <= cnt;i++)
{
if(a[i].ms - t >= 0) a[i].ms -= t;
else
{
a[i].ms -= t;
while(a[i].ms < 0) a[i].ms += 1000,a[i].s -= 1;
if(a[i].s < 0)
{
while(a[i].s < 0) a[i].s += 60,a[i].m -= 1;
if(a[i].m < 0)
{
while(a[i].m < 0) a[i].m += 60,a[i].h -= 1;
}
}
}
}
}
else
{
for(int i = 1;i <= cnt;i++)
{
if(a[i].ms + t < 1000) a[i].ms += t;
else
{
a[i].ms += t;
while(a[i].ms >= 1000) a[i].ms -= 1000,a[i].s += 1;
if(a[i].s >= 60)
{
while(a[i].s >= 60) a[i].s -= 60,a[i].m += 1;
if(a[i].m >= 60)
{
while(a[i].m >= 60) a[i].m -= 60,a[i].h += 1;
}
}
}
}
}
for(int i = 1;i <= cnt;i += 2)
{
if(a[i].id != 0) cout << a[i].id << endl;
if(a[i].id != 0) printf("%02d:%02d:%02d,%03d --> %02d:%02d:%02d,%03d\n",a[i].h,a[i].m,a[i].s,a[i].ms,a[i + 1].h,a[i + 1].m,a[i + 1].s,a[i + 1].ms);
if(a[i].id != 0) for(int j = 1;j <= a[i + 2].tn;j++) cout << a[i + 2].c[j];
if(i != cnt - 1 && i != cnt - 2) cout << endl;
if(i == cnt || i == cnt - 1)
{
cout << '#' << " ";
break;
}
}
return 0;
}
本蒟不知道如何去掉 \r