用IF函数来计算时间差。
思路:小时和分钟分别相减,分钟不够减就向小时借位,小时不够减就向“一天”借位。
难点:怎么计算跨天的时间。
方法如下:
如果两个时间的分钟差和小时差都是正数,是最简单的情况,相减直接输出结果就行。
尝试理解1:如果两个时间的分钟差是负数,可以理解为这两个时间除了小时不同,还有1个小时不到X分钟的差值。所以用60+(分钟差)的形式表示,同时小时要-1。
尝试理解2:在前面分钟差判断后的基础上,如果两个时间的小时差是负数,代表后面的时间已经跨天了,说明有一天不到X小时的差值。所以用24+(小时差)的形式表示。
#include <stdio.h>
int main() {
int h1, h2;
int m1, m2;
//定义并读入两个时间
printf("请输入当前时间,如8:00\n");
scanf("%d:%d", &h1, &m1);
printf("请输入目标时间,如10:00\n");
scanf("%d:%d", &h2, &m2);
//计算分钟差和小时差
int t1 = h2 - h1;
int t2 = m2 - m1;
//判断分钟差
if (t2 < 0) {
t2 += 60;
t1--;
}
//判断小时差
if (t1 < 0) {
t1 += 24;
}
//输出结果
printf("时间差是%d小时,%d分钟", t1, t2);
return 0;
}