top1编程
← 返回题目
题解

输出时间差

1 条题解

  • 0
    @ 2026-8-4 1:18:03

    解题思路

    输入格式是 "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