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

C++新手编写硬币金额计算程序出现异常结果求助

C++硬币金额计算程序异常问题分析

问题描述

我是大学C++入门课程的新手,正在编写一款程序:提示用户输入Quarters(25美分)、Dimes(10美分)、Nickels(5美分)的数量,将数量分别乘以对应硬币的面值后求和,输出总美分数。但程序运行结果异常,例如输入1 2 3时,总金额显示为1969559999美分,附上代码,请问问题出在哪里?

原代码

using namespace std;
int main(){

    // The number of coins that the user will input
    int quarters;
    int dimes;
    int nickels;

    // Coin values 
    int quarters_value = 25;
    int dimes_value = 10;
    int nickels_value = 5;

    // Multiplier 
    int quarter_product = quarters * quarters_value;
    int dime_product = dimes * dimes_value;
    int nickel_product = nickels * nickels_value;

    //Final sum 
    int final_sum = quarter_product + dime_product + nickel_product;
 
    cout << "Enter quarters, dimes, and nickels: \n";
    cin >> quarters >> dimes >> nickels;
    cout << "Number of quarters: " << quarters << endl;
    cout << "Number of Dimes: " << dimes << endl;
    cout << "Number of Nickels: " << nickels << endl;
    cout << "Quarter Product is: " << quarters_value << endl;
    cout << "Dime Product is is: " << dime_product << endl;
    cout << "Nickle Product is: " << nickel_product << endl;
    cout <<  "The amount is " << final_sum << endl;
   
    return 0;
} 

问题原因

  • 核心错误:计算逻辑顺序颠倒
    你在代码中先计算了quarter_product、dime_product、nickel_product以及final_sum,但此时quarters、dimes、nickels这三个变量还没有被用户输入赋值,属于未初始化的局部变量,它们的值是内存中的随机垃圾值,用这些值计算出来的结果自然是错误的。

  • 次要错误:输出内容错误
    输出Quarter Product is:时,你打印的是quarters_value(面值25),而不是计算后的quarter_product,这属于笔误;另外Dime Product is is:多打了一个is,也是小问题。

修正后的代码

using namespace std;
int main(){

    // 声明存储硬币数量的变量
    int quarters;
    int dimes;
    int nickels;

    // 硬币面值常量
    int quarters_value = 25;
    int dimes_value = 10;
    int nickels_value = 5;
 
    // 先提示用户输入并获取数据
    cout << "Enter quarters, dimes, and nickels: \n";
    cin >> quarters >> dimes >> nickels;

    // 获取输入后再进行乘积计算
    int quarter_product = quarters * quarters_value;
    int dime_product = dimes * dimes_value;
    int nickel_product = nickels * nickels_value;

    // 计算总金额
    int final_sum = quarter_product + dime_product + nickel_product;

    // 输出结果
    cout << "Number of quarters: " << quarters << endl;
    cout << "Number of Dimes: " << dimes << endl;
    cout << "Number of Nickels: " << nickels << endl;
    cout << "Quarter Product is: " << quarter_product << endl;
    cout << "Dime Product is: " << dime_product << endl;
    cout << "Nickel Product is: " << nickel_product << endl;
    cout <<  "The amount is " << final_sum << endl;
   
    return 0;
} 

验证结果

输入1 2 3时,计算过程为:1*25 + 2*10 +3*5 = 25+20+15=60,程序会输出总金额为60美分,结果正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:51:36