计算时间差问题

问:开始时间(a:b)和结束时间(c:d)都给你,且都为整数,请你计算出这段时间差

第一个思路是将时间以00:00为基础化成分钟制

再进行条件判断,判断结束时间是否大于开始时间,

        如大于,则时间差为结束时间-开始时间

        相反,小于,则时间差为1440-开始时间+结束时间  (24*60)一天时间

        同时,等于,说明结束时间与开始时间相同,则时间差为24小时

条件判断完后,再将时间差分成小时和分钟,再进行输出

#include<iostream>
using namespace std;
int main(){
    int a,b,c,d,m,h;
    cin >> a >> b >> c >> d;
    a *= 60;//分钟化
    c *= 60;
    if(a+b > c+d){  //进行条件判断
        h = (1440 - a - b + c + d) / 60;
        m = (1440 - a - b + c + d) % 60;
    }else if(a+b == c+d){
        h = 24;
        m = 0;
    }else{
    h = (c + d - a - b)/60;
    m = (c + d - a - b) %60; 
    }
    cout << "时间差为"<< h <<" hours "<<m<<" minutes";

    return 0;


}

第二种思路是小时相减(c-a),分钟相减(d-b)

再进行条件判断,判断分钟差是否大于0

        若小于,则将结束小时-1,并将结束分钟+60,再计算分钟时间差

判断小时差是否大于0

        若小于,则结束小时+24

再进行特殊情况判断,小时差与分钟差都为0,那么时间差就为24小时0分钟

#include<iostream>
using namespace std;
int main(){
    int a,b,c,d;
    cin >> a >> b >> c >> d;
    if(d - b < 0){
        d += 60;
        c -= 1;
    }
    if(c - a < 0){
        c += 24;
    }
    if(c - a == 0 && d - b == 0){
        c += 24;
    }    
    cout << "时间差为"<< c - a <<"hours "<<d - b<<" minutes";
    return 0;
}

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值