C语言新手编写秒数转周/天/时/分/秒程序运行输出异常求助
代码问题点
- 缺少头文件引入:调用
printf、scanf函数需要引入<stdio.h>头文件,否则编译会触发警告。 - 变量未初始化就参与运算:除了
s通过scanf拿到了用户输入值,w、d、h、m四个变量均未初始化,直接用于计算读取的就是内存残留的随机值,也就是你看到的固定值70019的来源。 - 单位换算顺序完全错误:当前你从最大单位周开始计算,但没有先将输入的秒数向上换算为更高阶的总单位值,逻辑完全倒置。正确逻辑应该从最小单位秒开始,逐层向上拆分,先算剩余秒,再依次算剩余分钟、剩余小时、剩余天,最后得到周数。
- 输出参数全部错误:所有
printf语句的输出变量都填了h,导致所有字段输出同一个值。
修正后可正常运行的代码
#include <stdio.h> int main(void) { int w, d, h, m, s, input_s; printf("Please enter amount of seconds: " ); scanf("%d",&input_s); // 逐层换算单位 s = input_s % 60; int total_min = input_s / 60; m = total_min % 60; int total_hour = total_min / 60; h = total_hour % 24; int total_day = total_hour / 24; d = total_day % 7; w = total_day / 7; printf("\nWeeks: %d", w); printf("\nDays: %d", d); printf("\nHours: %d", h); printf("\nMinutes: %d", m); printf("\nSeconds: %d", s); return 0; }
效果验证
输入:694861
输出:
Weeks: 1 Days: 1 Hours: 2 Minutes: 21 Seconds: 1
内容的提问来源于stack exchange,提问作者Jonas Schøn
相关产品推荐
相关产品推荐

