无效功能有问题

Having issues with void function

本文关键字:有问题 功能 无效      更新时间:2023-10-16

我正在尝试程序显示奖金,但程序将答案呈现为 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

当你调用enterItems时,你是通过复制传递参数的。这意味着您的更改不会影响调用方作用域中可用的变量。

要解决它,您可以传递几个引用或指针,也可以依赖从函数返回的一对结果,依此类推。

例如,通过编写:

void enterItems(double &salesAmt, double &rate)

您实际上将解决上述问题。
另一个有效的原型是:

void enterItems(double *salesAmt, double *rate)

即使这个要求在你的代码周围进行一小组更改(当然是示例)。

有很多可能的解决方案,希望这些解决方案能让您了解问题所在。

你的函数

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();