我要上大学里的第一堂C++课,所以我在这里完全是个新手。我正在尝试制作一个程序,提示用户输入一些Dimes、Nickels和quarters。然后,程序将取这些值,将它们乘以硬币本身的值,然后求出美分的总和。最后,程序将打印出总额。
然而,我得到了一些非常古怪的结果。例如,如果用户输入1 2 3,即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;
}
变量的工作方式与您假设的不同。当你这样做:
int quarters;
int quarters_value = 25;
int quarter_product = quarters * quarters_value;
cin >> quarters;
所有内容都从顶部到底部。这意味着,一旦输入了quarters
(cin >> quarters
(的值,变量quarter_product
就已经被赋值。更改quarters
不会更改quarter_product
。
通过做:
int quarter_product = quarters * quarters_value;
您不是在创建一个数学规则,即quarter_product
始终等于quarters
和quarters_value
变量的乘积。您所做的只是获取quarters
和quarter_value
的当前值,计算它们的乘积并分配它。
考虑到quarters
尚未分配值,这将导致"未定义的行为"。任何事情都有可能发生。
要修复问题,您需要首先读取变量中的用户输入,然后计算乘积:
int quarters;
int quarters_value = 25;
cin >> quarters; // first
int quarter_product = quarters * quarters_value; // second
int final_sum = quarter_product + dime_product + nickel_product; // third
cout << "The amount is " << final_sum << endl; // fourth