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;
}

这样可以避免很多麻烦。

posted @ 2018-02-17 10:59  左揽雀尾007  阅读(655)  评论(0编辑  收藏  举报