题目-计算火车运行时间
根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
分析细节
输入的4位正整数 a、b 需要分离成两个部分:小时数 hh = a / 100,分钟数 mm = b % 100
小时与分钟是不同的单位,1小时 = 60分钟,不同于常规的十进制计算,先把全部时间转化为以分钟为单位进行计算得出结果,再转化成输出格式
这种大单位化小单位的统一单位计算方式不需要考虑当到达分钟数小于出发分钟数时的借位问题
4位正整数转化为分钟数 = 小时数 X 60 + 分钟数 = hh * 60 + mm
旅途所用时间 Time = 到达时间 - 出发时间 ,以分钟为单位
计算结果转化成输出格式:(Time / 60):(Time % 60)
输出的小时数/分钟数的两位数不足十的时候用零来补齐前面空余的数位:
使用包含于头文件 #include<iomanip> 的 setw()设置宽度 + setfill()设置填充字符
输出格式中的 “:”为英文字符,非中文冒号
代码
1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 int main() 5 { 6 int a,b; 7 cin >> a >> b; 8 int hh1, hh2, mm1, mm2; 9 hh1 = a/100; 10 hh2 = b/100; 11 mm1 = a%100; 12 mm2 = b%100; 13 int time, hh, mm; 14 time = (hh2*60+mm2)-(hh1*60+mm1); 15 hh = time/60; 16 mm = time%60; 17 cout << setw(2) << setfill('0') << hh << ":" << setw(2) << setfill('0') << mm << endl; 18 return 0; 19 }