问:开始时间(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;
}