首先,换算成秒。两个,HH:MM:SS,相对于00:00:00 差了HH*3600+MM*60+SS秒。如果跨了天,那要其它考虑。比如 16:13:12 和09:15:22 相差了( 16*3600+13*60+12)-(9*3600+15*60+22)秒。
然后,我们得到了25070 换成时间 25070/3600 取整。那就是6。
(25070-6*3600)/60=57.8 取整就是57分。
25070-6*3600-57*60=50 秒。
所以相差 6小时57分50秒。
别迟疑了。快开始编程吧。这样动手能力才能得到加强的哦。
追问我还是没懂,,555~~~
追答这个问题的核心在于,取整操作,忽略掉了细节。比如对小时取整,就忽略了分和秒。依次类推。
如果你要程序,我就帮你写一个。只是我感觉还是自己研究下能加强对时间的理解。
追问帮我写一下吧,,我慢慢理解,,我才是个大一的,,不懂,,拜托了
追答好的,程序我会用另一种方式来实现。刚刚的算法并不严谨。不过我不会写C。只会C#。
追问太感谢了,,只要编译成功就好,,嘿嘿,,非常感谢
追答这个算法是采取退位相减的做法,时间复杂度其实差不多。不过更简单。
num1,num2保存了两个时间的时分秒。
代码必须装VS2010才能打开。所以贴了关键代码,应该C语言实现也不难。
//为了讲解方便,下面不采取循环,一步一步手工操作
int second = num1[2] - num2[2];
if (second < 0)
{
second += 60;
num1[1] -= 1;//这里是,减不尽的话,就向前一个借一位。比如,秒减秒,变成负数,就向被减数的分,借一位。60进制。
}
int min = num1[1] - num2[1];
if (min < 0)
{
min += 60;
num1[0] -= 1;
}
int hour = num1[0] - num2[0];