题目描述
小科每天上学都是坐地铁的,所以他妈妈给他办了一张地铁卡,每次乘坐地铁出入闸机时刷卡就行。最近一段时间,小科想知道从家到学校要多长时间,所以从地铁公司调出了n次乘车的记录信息进行核算,手动核算太麻烦,所以他想编写一个程序进行核算。
一次乘车记录包含两条信息,第一条信息是入闸机时闸机上显示的信息,表示入闸机开始乘车时间,第二条信息是出闸机时闸机上显示的时间,表示结束乘车时间
例如,一条乘车记录如下
09:58 10:48
前一条是入闸机时的信息,表示在入口闸机上刷卡时间是9点58分
后一条是出闸机时的信息,表示在出口闸机上刷卡时间是10点48分
那么可以知道这次乘车花费时间是50分钟
现在给出小科n次乘车的记录信息,请你计算出n次乘车花费的时间
输入格式
第一行,n次乘车记录 (1 ≤ n ≤ 100)
接下来n行,表示有n组入站闸机和出站闸机的乘车时间记录
输出格式
输出n行,每次乘车花费的时间
格式为:xxHyyM其中xx和yy分别是小时和分钟,并且都是两位数,不够两位时用0补齐
输入输出样例
输入样例1:
1
09:58 10:48
输出样例1:
00H50M
输入样例2:
2
09:34 10:52
06:35 07:45
输出样例2:
01H18M
01H10M
说明
(1)对于100%的数据,1 ≤ n ≤ 100,
(2)对于每次乘车记录,出闸机时间一定大于入闸机时间
这一题本人写的有亿点点复杂,还请见谅
代码:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{int n,s1,s2,k1,q,w;cin>>n;char a[1100];while(n--){for(int i=1;i<3;i++) cin>>a[i];if(a[1]!='0'){s1=a[1]-'0';k1=a[2]-'0';s1=s1*10+k1;}else s1=a[2]-'0';cin.get();for(int i=1;i<3;i++) cin>>a[i];if(a[1]!='0'){s2=a[1]-'0';k1=a[2]-'0';s2=s2*10+k1;}else s2=a[2]-'0';q=s1;w=s2;cin.get();for(int i=1;i<3;i++) cin>>a[i];if(a[1]!='0'){s1=a[1]-'0';k1=a[2]-'0';s1=s1*10+k1;}else s1=a[2]-'0';cin.get();for(int i=1;i<3;i++) cin>>a[i];if(a[1]!='0'){s2=a[1]-'0';k1=a[2]-'0';s2=s2*10+k1;}else s2=a[2]-'0';s1-=q;s2-=w;if(s2<0){s1--;s2+=60;}if(s1==0) cout<<"00H";else if(s1<10) printf("0%dH",s1);else cout<<s1<<"H";if(s2==0) cout<<"00M";else if(s2<10) printf("0%dM",s2);else cout<<s2<<"M";printf("\n");} return 0;
}