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

C++找零硬币计算程序Bug排查:输入78时nickels结果异常

找零硬币计算中Nickels数值错误的修复方案

错误原因

你计算5分硬币(nickels)的逻辑存在问题:原代码直接用num % 10获取原金额对10的余数,但这个值没有考虑已经用掉的25分硬币(quarters)和10分硬币(dimes)的金额。以输入78为例:

  • 3个quarters占75分,实际剩余3分
  • 但78 % 10得到的是8,用8/5算出1个nickels,这和实际剩余金额不符,导致结果错误。

修正后的代码

#include <cmath>
#include <iostream>

using namespace std;

int main() {
    
    int num, q, d, n, p;

    cout << "Enter a number between 0 to 99 for cents: ";
    cin >> num;

    q = num / 25;
    cout << "The number of quarters: " << q << endl;
    
    int after_quarters = num % 25;
    d = after_quarters / 10;
    cout << "The number of dimes: " << d << endl;
    
    int after_dimes = after_quarters % 10;
    n = after_dimes / 5;
    cout << "The number of nickels: " << n << endl;
    
    p = after_dimes % 5;
    cout << "The number of pennies: " << p << endl;

    return 0;

}

修正逻辑说明

  1. 先计算quarters数量,同时得到扣除quarters后的剩余金额after_quarters = num % 25
  2. 用剩余金额计算dimes数量,再得到扣除dimes后的剩余金额after_dimes = after_quarters % 10
  3. 基于最终剩余金额计算nickels和pennies,确保每一步都使用扣除前面硬币后的实际剩余金额

输入78时,修正后的结果为:quarters:3、dimes:0、nickels:0、pennies:3,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:05:14