C++ 有空函数的问题
我正在尝试使用该程序显示奖金,但该程序会将答案呈现为0。我对C++非常陌生,所以任何指导都会被大大理解。 代码如下:C++ 有空函数的问题,c++,C++,我正在尝试使用该程序显示奖金,但该程序会将答案呈现为0。我对C++非常陌生,所以任何指导都会被大大理解。 代码如下: #include <iostream> #include <iomanip> using namespace std; //function prototypes void enterItems(double, double); void calcAndDisplayBonus(double &salesAmt, double &rate
#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
你的职能
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();
当您调用enterItems时,您正在按副本传递参数。这意味着您的更改不会影响调用者范围内可用的变量
要解决这个问题,您可以传递几个引用或指针,也可以依赖函数返回的一对作为结果,依此类推
例如,通过编写:
void enterItems(double &salesAmt, double &rate)
您将实际解决上述问题。
另一个有效的原型是:
void enterItems(double *salesAmt, double *rate)
当然,尽管这个示例要求对代码进行一小部分更改,但仍然需要修改示例
有很多可能的解决方案,希望这些解决方案能让您了解问题所在。请使您的标题有用。如果需要格式化,请使用printftext@stackptr在C中,您可以这样做,在C++中,使用流操作器setprecision@PatrickRobertsprintf更容易用于格式化文本。此外,它更快。@关于是否值得回到C函数以供特定性能使用用例的争论是有价值的,但在对来自C++开发人员的问题的评论中,这些问题不应该面对像使用PrtTF这样的陈述而不具备任何资格的事实。我们已经有足够的C++开发人员盲目地编写C习语了,非常感谢。实际上你可以返回多个值,但是我不会这么做。你的方法看起来很好,模缺失常数。嗯,你是对的,你可以返回一对或一些结构,但我现在想保持简单。我100%同意的一般建议是,通过改变参数返回是不明智的。