有时候人们用四位数字表示一个时间,比如 1106
表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530
;0 点 30 分表示为 030
。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530
;0 点 30 分表示为 030
。流逝的分钟数可能超过 60,也可能是负数。
输出格式:
输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
鸣谢燕山大学穆运峰老师、用户任钰补充数据!
第一版代码
#include <stdio.h>
int main()
{
int i,j;
scanf("%d",&i);
scanf("%d",&j);
int shi,fen;
shi=i/100;
fen=i%100;
fen+=j;
if(fen>=60)
{
shi+=fen/60;
fen=fen%60;
}
if(fen<0)
{
int temp=-fen;
int k=temp/60;
// printf("%d\n",temp);
if(k<shi)
{
shi-=k;
fen=60-temp%60;
}
else
{
shi=0;
}
}
printf("%d%02d",shi,fen);
}
但是,最后一个点过不去。。。经过反复尝试,终于明白了最后这阴间的点了
比如040 -60,这样子,输出什么呢?是0-20,极其离谱。。。而且我猜测检测点应该没有040 -110这样的(它是输出0-70呢?还是-110呢?)
顺带还改进了代码,省去了繁杂的if过程,直接转换成分钟(我猜标准码应该也是这么写的)。
#include <stdio.h>
int main()
{
int i,j;
scanf("%d",&i);
scanf("%d",&j);
int shi,fen;
shi=i/100;
fen=i%100;
int fen2=shi*60+fen;
fen2+=j;
int shi2;
if(fen2<=0)shi2=0;
else shi2=fen2/60;
fen2=fen2%60;
printf("%d%02d",shi2,fen2);
}