7-2-时间的换算

本文详细解析了一道PAT基础级的时间计算题,涉及四位数字表示时间的加减运算,包括分钟超过60或为负数的特殊情况处理。通过具体实例,讲解了如何正确转换和输出时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

输出格式:
输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。

输入样例:
1120 110
输出样例:
1310

#include<stdio.h>
int main(){
  int a,b;
  scanf("%d %d",&a,&b);
  int hour=a/100;
  int min=a%100;
  if(b>0){
    int h=hour+(min+b)/60;
    int m=(min+b)%60;
    printf("%02d%02d\n",h,m);
  }else{
    int fb=-b;
    int h=hour-fb/60-1;
    int m=(60-fb%60+min)%60;
    h=h+(60-fb%60+min)/60;
    printf("%d%02d\n",h,m);
  }
   return 0;
}

各人总结:
在学习各种博客后,终于弄懂了这个时间转换的磨人小妖精
算法思想还是相对来说很简单的,但是在分钟的转换时特别要注意以下几点:
1.当分钟为正数时,在原来分钟的基础上加上后来的分钟,但这可能会导致小时数+1;
2.当分钟为负数的时候情况就较为复杂,
第一:要考虑到,小时数要减去分钟数模60,并且还要-1;
第二:分钟数倒着减的时候,可以采取60减去分钟模上60加上原来的分钟数,最后将分钟数模上60;
第三:因为存在小时数会多减的情况,所以最后需要加上上述分钟求值得式子最后除以60的余数,才是最终的结果
3.格式输出时也需要特别注意,因为小时和分钟是按照四位数的格式输出的,所以更要注意~
✿✿ヽ(°▽°)ノ✿


华丽丽的分割线,
PAT基础也不容易啊,各位爷加油ヾ(◍°∇°◍)ノ゙

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值