题目

读入非负整数总秒数,按 时:分:秒 格式输出(时分秒均为整数,可不带前导零)。

输入格式:一行输入一个非负整数,表示总秒数。

输出格式:输出格式为 时:分:秒 的时间字符串,末尾换行。

数据范围与约定:0 ≤ 总秒数 ≤ 109。

思路与算法

1. 时间换算数学关系
1 小时 = 3600 秒,1 分钟 = 60 秒。
小时数:h = total / 3600;
分钟数:扣除完整小时后剩下的秒数再求分钟,m = (total % 3600) / 60;
秒数:剩余不足一分钟的秒数,s = total % 60。

2. 运算次序
务必对求余后的剩余量进行二次除法,避免在原 total 上计算导致小时与分钟重叠。

完整程序

#include <stdio.h>

int main(void)
{
    int total;
    if (scanf("%d", &total) != 1 || total < 0) {
        return 1;
    }

    // 1 小时 = 3600 秒
    int h = total / 3600;
    // 扣除整小时后,剩余的秒数换算为分钟(每 60 秒为 1 分钟)
    int m = (total % 3600) / 60;
    // 不足 1 分钟的零头秒数
    int s = total % 60;

    printf("%d:%d:%d\n", h, m, s);
    return 0;
}

运行示例

输入:

3661

输出:

1:1:1