You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C语言实现每15分钟循环输出时间并修复无限循环问题

问题修复说明

死循环根本原因

for循环的步进段仅写了i+900,没有将计算结果赋值给变量i,导致i的值全程没有变化,始终满足i <= endtime的循环判断条件,程序就会无限运行。
修正方式:将for循环的步进表达式改为i += 900。

其他功能异常问题修复

你的代码还存在几处逻辑错误,会导致输出结果不符合要求,同步修复如下:

  • 秒数计算错误:当前sec = i - min的逻辑完全错误,总秒数转「分钟+秒」的正确逻辑为:
    min = i / 60;
    sec = i % 60;
    
  • 输出格式不符合要求:需要输出mm:ss格式,应该使用%02d:%02d作为格式化占位符,自动给个位数的分钟、秒补前导0。
  • 结束时间精度问题:endtime声明为int类型,但(distance/90)*3600是浮点运算,直接赋值给int会自动截断小数部分,可能导致最后一个时间点无法输出,可根据需求做四舍五入/向上取整处理。

修正后的核心代码片段

timesec = hour*3600 + min*60 + sec;
// 结束时间计算加0.5做四舍五入,避免精度截断丢失最后一个周期
endtime = timesec + (int)((distance/90)*3600 + 0.5);

printf("Starting time | Fare(%.1fkm)\n", distance);

// 修正步进表达式
for (int i=timesec; i<=endtime; i += 900)
{
    min = i/60;
    sec = i % 60; // 修正秒数计算
    printf("%02d:%02d   |  $XX.yy\n", min, sec); // 修正格式化输出
}

内容的提问来源于stack exchange,提问作者Hello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:27:03