7-16 然后是几点(15 分)
有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
输入格式:
输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。
输出格式:
输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
1 #include<stdio.h> 2 3 int main() 4 { 5 int zong, h, min, bianhua; 6 scanf("%d %d", &zong, &bianhua); 7 h = zong / 100; 8 min = zong % 100; 9 h = h + (min + bianhua) / 60; 10 min = (min + bianhua) % 60; 11 if(min < 0) { 12 h = h - 1; 13 min = min + 60; 14 } 15 printf("%d%02d\n",h, min); 16 17 return 0; 18 }
很简单的一个题目,但是也有几个坑。第一次我在输入的时候,直接用“%d%d %d",以为这样直接可以输入,可是等我把1120 110输入过后,还是等待我输入的时候,我知道自己错了。
第二个问题是,没考虑后面分钟是负数的情况。后来加了个if语句,就正常了。
想想,也可以直接变成分钟
#include<stdio.h> int main() { int zong, h, min, bianhua; scanf("%d %d", &zong, &bianhua); zong = zong / 100 * 60 + zong % 100; zong = zong + bianhua; h = zong / 60; min = zong % 60; printf("%d%02d\n",h, min); return 0; }
这样可以避免很多麻烦。