题解
输出时间差
1 条题解
-
0
解题思路
输入格式是 "5:45:40 15:45:10" 这样的两个时间,要求输出它们的差,格式是 HH:MM:SS。
时间计算最方便的办法是把时间全部换算成秒:
- 第一个时间总秒数 = 时×3600 + 分×60 + 秒
- 第二个时间总秒数同样换算
两个秒数相减,得到差值的总秒数,再换算回去:
- 小时 = 总秒数 ÷ 3600
- 分钟 = (总秒数 ÷ 60) % 60
- 秒 = 总秒数 % 60
输出时用 %02d,不足两位自动补 0(比如 9 输出成 09)。
题目要求用 scanf 和 printf,所以头文件要包含 。
参考代码
// 用途:计算两个时间 HH:MM:SS 的差值,并按相同格式输出 #include <cstdio> int main() { int h1, m1, s1, h2, m2, s2; scanf("%d:%d:%d %d:%d:%d", &h1, &m1, &s1, &h2, &m2, &s2); // 都换算成秒再相减 int t1 = h1 * 3600 + m1 * 60 + s1; int t2 = h2 * 3600 + m2 * 60 + s2; int d = t2 - t1; // 再换算回 时:分:秒,%02d 表示不足两位补 0 printf("%02d:%02d:%02d ", d / 3600, d / 60 % 60, d % 60); return 0; }复杂度分析
只需要做几次加减乘除和除法取余,时间复杂度是 O(1)。
- 1