题目标题:计算火车运行时间 题目作者:沈睿浙江大学
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。
输入样例:
1201 1530
输出样例:
03:29
思路1:设出发时刻为sh点sm分,到达时刻为eh点em分。我们计算出从当天0点0分开始到火车出发时刻所经历的总的分钟数,即SM = sh*60+sm,计算出从当天0点0分开始到火车到达时刻所经历的总的分钟数,即EM = eh*60+em。这样我们就可以计算出从火车出发时刻到火车到达时刻所经历的分钟数,即passM = EM – SM。于是,所经历的小时数和分钟数分别是passM/60和pass%60。
注意:输出格式要保留2位小时数和分钟数,即hh:mm,当只有一位时前面要保留一位前导0,用%.2d或者%02d即可。
代码1:
#include int main () {int sh,sm,eh,em,passM;scanf("%2d%2d %2d%2d", &sh,&sm,&eh,&em);passM = (eh*60+em) - (sh*60+sm);printf("%.2d:%.2d",passM/60, passM%60);return 0;}
思路2:也可以直接用到达时刻的小时数减去出发时刻的小时数,得到passH= eh-sh;用到达时刻的分钟数减去出发时刻的分钟数,得到passM= em-sm。然后再看passM是否小于0,若passM小于0,则从passH借1,给passM加上60;否则,不变。
代码2:
#include int main () {int sh,sm,eh,em,passH,passM;scanf("%2d%2d %2d%2d", &sh,&sm,&eh,&em);passH = eh - sh;passM = em - sm;if (passM < 0) {passH -= 1;passM += 60;}printf("%.2d:%.2d",passH, passM);return 0;}