题目
从标准输入读入一个非负整数代表总秒数,换算成对应的小时、分钟与秒,并按 HH:MM:SS 标准两位补零格式输出。
输入格式:一行输入一个非负整数。
输出格式:输出格式化时间字符串 HH:MM:SS。
数据范围与约定:0 ≤ 总秒数 ≤ 8640000(支持超过24小时的大跨度时间)。
思路与算法
1. 整数截断与取模
总秒数转时分秒:小时数 $H = \lfloor S / 3600 \rfloor$;剩余秒数 $rem = S \pmod{3600}$;分钟数 $M = \lfloor rem / 60 \rfloor$;最终秒数 $sec = rem \pmod{60}$。
2. fix、floor 与 mod
Octave 针对正整数商取整使用 fix()(向零截断)或 floor()(向下取整)均可;求余使用 mod(a, m)。
3. 两位补零格式化fprintf("%02d:%02d:%02d\n", h, m, s) 中的 %02d 保证不足两位时左侧补零。
完整程序
% Octave / MATLAB 第6题:总秒数换算时分秒
[total_seconds, count] = scanf("%d", 1);
if count < 1 || total_seconds < 0
fprintf("错误:请输入有效的非负总秒数。\n");
return;
end
hours = fix(total_seconds / 3600);
rem_seconds = mod(total_seconds, 3600);
minutes = fix(rem_seconds / 60);
seconds = mod(rem_seconds, 60);
fprintf("总秒数: %d\n", total_seconds);
fprintf("时分秒: %02d:%02d:%02d\n", hours, minutes, seconds);运行示例
示例 1:
输入:
3665输出:
总秒数: 3665
时分秒: 01:01:05示例 2:
输入:
86400输出:
总秒数: 86400
时分秒: 24:00:00