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
相关产品推荐
相关产品推荐

