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

为何我的找零计算代码无法得出正确结果?

问题分析与修复方案

你的代码存在两处核心错误,直接导致计算结果异常:

1. 大额硬币计算函数仅执行单次判断,未处理多枚兑换场景

calculate_quarters、calculate_dimes、calculate_nickels这三个函数目前只会检查一次是否能兑换对应硬币,比如输入50分时,本该返回2个quarters,但当前代码只返回1。

错误示例(以quarters为例):

int calculate_quarters(int cents)
{
    int qs = 0;
    if (cents >= 25) {
        cents -= 25;
        qs++;
    }
    return qs;
}

修复方式:用整数除法直接计算最大可兑换数量(简洁高效):

int calculate_quarters(int cents)
{
    return cents / 25;
}

int calculate_dimes(int cents)
{
    return cents / 10;
}

int calculate_nickels(int cents)
{
    return cents / 5;
}

2. calculate_pennies函数逻辑完全错误

当前函数的判断条件是if (cents >=5),完全不符合便士(1分)的兑换逻辑,而且仅执行一次加1操作,根本无法统计剩余的所有分币。

错误写法:

int calculate_pennies(int cents)
{
    int ps = 0;
    if (cents >= 5) {
        cents -= 1;
        ps++;
    }
    return ps;
}

修复方式:直接返回剩余的所有分币数量即可:

int calculate_pennies(int cents)
{
    return cents;
}

验证修复效果

  • 输入4时:经过前面的大额硬币计算后剩余4分,calculate_pennies返回4,总硬币数为4,符合预期
  • 输入26时:quarters返回1,剩余1分,pennies返回1,总硬币数为2,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:33:24