题目
读入非负整数总秒数,按 时:分:秒 格式输出(时分秒均为整数,可不带前导零)。
输入格式:一行输入一个非负整数,表示总秒数。
输出格式:输出格式为 时:分:秒 的时间字符串,末尾换行。
数据范围与约定: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