当我尝试添加多个产品时,会得到非常奇怪的结果

  • 本文关键字:非常 结果 添加 c++ operation
  • 更新时间 :
  • 英文 :


我要上大学里的第一堂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始终等于quartersquarters_value变量的乘积。您所做的只是获取quartersquarter_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

最新更新