我正在尝试使用该程序来显示奖金,但程序会给出0的答案。我对c ++非常陌生,所以任何指导都会非常感激。
以下是代码:
#include <iostream>
#include <iomanip>
using namespace std;
//function prototypes
void enterItems(double, double);
void calcAndDisplayBonus(double &salesAmt, double &rate);
int main()
{
//declare variables
double sales = 0.0;
double bonusRate = 0.0;
//enter input values
enterItems(sales, bonusRate);
//calculate and display bonus
cout << fixed << setprecision(2);
calcAndDisplayBonus(sales, bonusRate);
system("pause");
return 0;
} //end of main function
//*****function definitions*****
void enterItems(double salesAmt, double rate)
{
cout << "Enter sales: ";
cin >> salesAmt;
cout << "Enter bonus rate (in decimal form): ";
cin >> rate;
} //end of enterItems function
void calcAndDisplayBonus(double &salesAmt, double &rate)
{
cout << "Bonus: $" << salesAmt * rate << endl;
} //end of calcAndDisplayBonus function
答案 0 :(得分:1)
你的功能
void enterItems(double salesAmt, double rate)
按两个双参数按值,这意味着,您在函数内部所做的更改将无法从外部显示。你可以参考双打:
void enterItems(double &salesAmt, double &rate)
但我更喜欢返回值,但由于您只能返回一个值,因此您需要两个函数:
double enterSales()
{
double tmp;
cout << "Enter sales: ";
cin >> tmp;
return tmp;
}
double enterBonus()
{
double tmp;
cout << "Enter bonus rate (in decimal form): ";
cin >> tmp;
return tmp;
}
//in your main:
double sales = enterSales();
double bonusRate = enterBonus();
答案 1 :(得分:1)
当您致电enterItems
时,您将按副本传递参数。这意味着您的更改不会影响调用者范围内可用的变量。
要解决这个问题,你可以传递几个引用或指针,也可以依赖函数返回的一对,依此类推。
举个例子,写一下:
void enterItems(double &salesAmt, double &rate)
您实际上已经解决了上述问题 另一个有效的原型是:
void enterItems(double *salesAmt, double *rate)
即使这个代码要求您的代码周围进行一小组更改(当然也是示例)。
有很多可能的解决方案,希望这些解决方案可以让您了解错误。