计算时间差问题

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

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

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

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

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

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

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

#include
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 "<

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

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

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

判断小时差是否大于0

        若小于,则结束小时+24

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

#include
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 "<

你可能感兴趣的:(c++,算法,数据结构)