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

24小时制火车行程时长计算C++代码调试求助

问题原因
  • 核心逻辑错误:你直接对四位格式的时间数值做减法,得到的是十进制数值差,不是实际时间差。例如1900减1850得到的十进制结果是50,但对应时间差的计算需要按60进制处理,不能直接按数位拆分差值。
  • 语法错误:最后输出语句里的变量写的是Minutes,但你定义的变量名是小写的mins,大小写不匹配会直接编译报错。
  • 边界处理逻辑错误:你写的if(mins > 60)判断完全不符合场景,跨小时的时间差值按你的原逻辑拆分后分钟会是负数,根本不会出现大于60的情况。
修正思路

统一把两个时间转换为从当日0点开始的总分钟数,计算差值后再拆分回小时和分钟,就能避开60进制和100进制的转换问题:

  1. 从四位输入值中拆分出小时和分钟:小时为数值除以100取整,分钟为数值对100取余
  2. 分别计算出发、到达时间的总分钟数:小时*60 + 分钟
  3. 总分钟差值 = 到达总分钟 - 出发总分钟
  4. 总差值除以60取整得到小时数,对60取余得到分钟数
修正后的代码
#include <iostream>

using namespace std;

int main()
{
    int totalDiff, mins, hours, arrTime, depTime;
    int depHours, depMins, arrHours, arrMins;
    
    cout << "\nDeparture: ";
    cin >> depTime;
    cout << "\nArrival: ";
    cin >> arrTime;
    
    // 转换出发时间为总分钟
    depHours = depTime / 100;
    depMins = depTime % 100;
    int depTotal = depHours * 60 + depMins;
    
    // 转换到达时间为总分钟
    arrHours = arrTime / 100;
    arrMins = arrTime % 100;
    int arrTotal = arrHours * 60 + arrMins;
    
    totalDiff = arrTotal - depTotal;
    hours = totalDiff / 60;
    mins = totalDiff % 60;

    cout << "Hours: " << hours << " Minutes: " << mins;
    
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:54:05