[PTA]7-2 然后是几点
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]7-2 然后是几点相关的知识,希望对你有一定的参考价值。
有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。
读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。
输入格式:
输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。
输出格式:
输出四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
- 提交结果:
- 源码:
#include<stdio.h>
#include<math.h>
int main(void)
{
int time; // 当前时间
int pass; // 流逝的分钟数
scanf("%d", &time);
scanf("%d", &pass);
int hour, minute;
/* 将当前时间切分成小时分钟表示,前两位表示小时,后两位表示分钟 */
hour = time / 100;
minute = time % 100;
if (pass >= 0) // 流逝的分钟数不小于0
{
minute += pass; // 分钟数=当前分钟数+流逝的分钟数
hour += (minute / 60); // 原来小时数加上流逝的小时数
minute %= 60; // 分钟数更新
}
else
{
minute += pass; // 原来的分钟数加上负的流逝分钟数
hour -= (abs(minute) / 60); // 小时数减去流逝的小时数,仍然还有余下分钟数未换算
minute = abs(minute) % 60; // 余下的未换算的分钟数
hour--; // 再新取一个小时把余下的分钟数换算掉
minute = 60 - minute; // 新的分钟数
}
printf("%d%02d\\n", hour, minute);
return 0;
}
以上是关于[PTA]7-2 然后是几点的主要内容,如果未能解决你的问题,请参考以下文章