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

C语言行程时间计算程序故障:分钟始终显示为0求助

行程时间计算:分钟始终显示0的问题修复

你的问题核心是分钟计算逻辑完全错误,和变量类型转换关系不大,下面直接拆解问题并给出修复方案:

原代码的问题点

  1. Temp = (int)Distance % (int)Speed; 这个整数取模的结果是「距离除以速度的整数余数」(比如150km除以60km/h,取模得到30,这个30是剩余公里数,和时间无关),完全不是你需要的时间剩余部分。
  2. Minutes = (Temp / 100) * 60; 这里是整数除法,只要Temp是两位数以内的整数,Temp / 100的结果必然是0,再乘60还是0——这就是分钟始终为0的直接原因。

正确的计算逻辑

要得到分钟数,应该基于总行驶时间的小数部分转换:

  1. 先计算完整的总时间(浮点数,包含整数小时和小数小时)
  2. 小时数取总时间的整数部分
  3. 用总时间减去整数小时,得到剩余的小数小时,再乘以60转换成分钟

修正后的代码

#include <stdio.h>
#include <math.h> // 用到round函数需要引入头文件

int main()
{
    // 初始化变量
    float Speed, Distance, total_time;
    int Hours, Minutes;
    
    printf("This program will take a distance and a speed and calculate your driving time!\n");

    // 获取用户输入
    printf("please enter the speed you are driving at: ");
    scanf("%f", &Speed);

    printf("Enter the distance you will travel: ");
    scanf("%f", &Distance);

    // 计算总时间
    total_time = Distance / Speed;
    // 提取小时的整数部分
    Hours = (int)total_time;
    // 把剩余的小数小时转换成分钟,用round实现四舍五入
    Minutes = round((total_time - Hours) * 60);
    
    // 输出结果
    printf("If you are traveling %.2f km at the speed %.2f km/h you will arrive in %d hours and %d minutes\n", 
           Distance, Speed, Hours, Minutes);

    return 0;
}

补充说明

  • 如果不需要四舍五入,直接去掉round函数,用(total_time - Hours) * 60强制转int即可,不过实际场景中四舍五入更符合需求。
  • 原代码里的Remainder和Temp变量可以直接删除,逻辑调整后不再需要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:47:40