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

如何正确计算24小时制通话时长并转换为分钟数?代码问题求助

24小时制通话时长计算错误分析与修复

问题背景

需要基于24小时制格式输入的通话起止时间(如1810代表18点10分),先计算实际通话时长(分钟数),再按以下规则计算最终结果:

  • 时长≥120分钟:结果 = 时长 × 0.60(向上取整)
  • 60≤时长<120分钟:结果 = 时长 - 40
  • 时长<60分钟:结果 = 时长

当前代码存在计算错误:

  • 错误案例1:输入0852(开始)、0906(结束),代码输出54分钟,实际应为14分钟
  • 错误案例2:输入0805(开始)、1210(结束),代码输出243分钟,实际应为245分钟
  • 正确案例:输入0123(开始)、0224(结束),代码输出61分钟(此案例因巧合得到正确结果,但逻辑错误)

错误根源

代码直接将输入的时间整数(如0852、0906)做减法取绝对值,这完全不符合时间计算逻辑:

  • 时间整数的数值和实际分钟数并非线性对应,0852实际是8×60+52=532分钟,0906是9×60+6=546分钟,正确差值是14分钟,但代码计算的是|852-906|=54,完全偏离实际时长。

修复方案

必须先将输入的时间整数转换为当天的总分钟数,再计算通话时长(需处理跨天情况,如2350到0010的时长为20分钟),最后应用规则计算结果。

修复后的C语言代码

#include <stdio.h>
#include <math.h>

// 将时间整数(如1810)转换为当天总分钟数
int time_to_minutes(int time) {
    int hours = time / 100;
    int minutes = time % 100;
    return hours * 60 + minutes;
}

int main() {
    int startTime, endTime;
    int startMinutes, endMinutes, duration;
    int result;
    
    printf("\nPLDT Telephone Call Charge\n");
    printf("\nStart time\t: ");
    scanf("%d", &startTime);
    printf("End time\t: ");
    scanf("%d", &endTime);

    // 转换为当天总分钟数
    startMinutes = time_to_minutes(startTime);
    endMinutes = time_to_minutes(endTime);

    // 计算实际通话时长,处理跨天场景
    if (endMinutes >= startMinutes) {
        duration = endMinutes - startMinutes;
    } else {
        // 跨天则加上24小时的总分钟数
        duration = (24 * 60 - startMinutes) + endMinutes;
    }

    // 按规则计算最终结果
    if (duration >= 120) {
        result = ceil(duration * 0.60);
    } else if (duration >= 60) {
        result = duration - 40;
    } else {
        result = duration;
    }

    printf("Length of call\t: %d minutes\n", result);
    return 0;
}

测试验证

  • 测试案例1:开始0852、结束0906
    • 转换后:532分钟 vs 546分钟,时长=14分钟,最终输出14分钟(正确)
  • 测试案例2:开始0805、结束1210
    • 转换后:485分钟 vs 730分钟,时长=245分钟,245×0.6=147,向上取整后输出147分钟(原代码错误输出243,现纠正)
  • 测试案例3:开始0123、结束0224
    • 转换后:83分钟 vs 144分钟,时长=61分钟,按规则输出61-40=21分钟(若需求为输出实际时长,可直接使用duration值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:05:17