然后是几点:根据起始时间和流逝的时间计算出终止时间(起始时间和终止时间不一定在同一天内)

今日PTA题目:

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:

输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:

输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零,起始时间和终止时间不一定在同一天内。

 

输入样例:

1120 110

输出样例:

1310

基本思路:

1、所有数据统一化为以分钟为单位

2、输入的第一项:起始时间。定义为变量(basicdate1),将其赋给变量(nowtime),之后将起始时间化为以分钟为单位,用变量(time1)储存

3、输入的第二项:流逝的时间。分正负,将其定义为一个变量(basicdate2), 判断正负后取模,变量为(increment)

4、判断条件流程如下

 5、将流逝后的时间赋给变量(finaltime),得出finalhour和finalminute分别作为两个输出值,因为题目要求小时可以一位,但分钟需保留两位,所以printf中,分钟(finalminute)的%d改为%02d

PTA系统成绩如下:

源代码如下:

#include 
int main()
{int basicdate1,basicdate2;int nowtime;int increment;int hour,minute;int time1;int finaltime;int finalhour,finalminute;scanf("%d %d",&basicdate1,&basicdate2);nowtime=basicdate1;if(basicdate2<0){increment=-1*basicdate2;}else{increment=basicdate2;}hour=nowtime/100;minute=nowtime%100;time1=hour*60+minute;if(basicdate2<0){if(time1-increment>=0){finaltime=time1-increment;}else{if(increment-time1>=1440){finaltime=1440-(increment-time1)%1440;}else{finaltime=1440-(increment-time1); }}}else{if(time1+increment<=1440){finaltime=time1+increment;}else{if(increment+time1>=2880){finaltime=time1+increment%1440-1440;}else{finaltime=increment+time1-1440;}}}finalhour=finaltime/60;finalminute=finaltime-60*finalhour;printf("%d%02d",finalhour,finalminute);return 0;
}

文字版解析如下: 

 

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部