有没有办法为这段代码添加传递引用?

时间:2016-12-06 09:38:26

标签: c++

这里的学生。我在以下项目计划中遗漏了一个专栏项目,无法找出放置它的位置,"它"是一个传递参考项目。如果有人感到慷慨,请看看下面我的程序,并给我一个关于我可以调整代码的地方,以便通过引用进行传递。就目前而言,我很难过,而且我没有足够的时间来提出一个全新的问题来编写解决方案。提前谢谢大家!

#include <iostream>
#include <cmath>
using namespace std;

//Global Variable
int height = 0;

//Function Prototypes
int getMale();
int getFemale();

int main()
{

    //Local Variable
    int ideal = 0;
    char sex(' ');

    //Sequence Structure
    cout << "Welcome to the Hamwi Ideal Body Weight Equation Calculator!" << endl;
    cout << "Please enter your height in inches (remember, 1 foot = 12 inches): " << endl;
    cin >> height;

    cout << "Please enter your biological sex (M or F): " << endl;
    cin >> sex;

    //Repetition Structure
    while (toupper(sex) != 'M' && 'F')
    {
        cout << "Invalid entry. Please enter your biological sex (M or F): " << endl;
        cin >> sex;
    } //end while

    //Selection Structure
    if (toupper(sex) == 'M')
    {
        int ideal = getMale();
        cout << "Thank you. Your ideal body weight is approximately: " << ideal << " pounds." << endl;
        cout << "Have a nice day!" << endl;
    } //end if

    else
    {
        int ideal = getFemale();
        cout << "Thank you. Your ideal body weight is approximately: " << ideal << " pounds." << endl;
        cout << "Have a nice day!" << endl;
    } //end else

    return 0;
} //end of main function

//Program-Defined Function #1 (Male)
int getMale()
{
    //Local Variable
    int male = 0;

    if (height >= 60)
    {
        male = 106 + ((height - 60) * 6);
        return male;
    } //end if

    else
    {
        male = 106 - ((60 - height) * 6);
        return male;
    } //end else
} //end of male function

//Program-Defined Function #2 (Female)
int getFemale()
{
    //Local Variable
    int female = 0;

    if (height >= 60)
    {
        female = 100 + ((height - 60) * 5);
        return female;
    } //end if

    else
    {
        female = 100 - ((60 - height) * 5);
        return female;
    } //end else
} //end of female function

4 个答案:

答案 0 :(得分:2)

您在其中一个性别功能中通过引用传递height

例如:

int getMale(int &height) {
    /* do stuff */
}

然后简单地通过以下方式调用它:

getMale(height);

另外,你需要使用全局变量吗?如果没有,请在height中将main作为其他评论者声明的本地变量。全局变量被认为是不好的风格,因为当您在更大的项目上工作时,它们可能会导致难以诊断的问题。

答案 1 :(得分:2)

声明你的两个函数

int getMale   ( int& height );
int getFemale ( int& height );

在你的主要部分中,你声明一个可以传递给函数的变量

int main()
{
    // Declare here instead of globally
    int height = 0;

    // Then you can call
    int result = getMale(height);
        result = getFemale(height);
}

它的行为方式相同。通过引用而不是使用全局变量被认为是更好的做法,所以对你提出这个问题感到很荣幸。

答案 2 :(得分:1)

您可以将变量height移动到main()(使其成为本地)并通过引用将其传递给您的所有函数。实际上,我认为这比通过全局变量传递数据更好。

但是在一个真实的项目中,通常最好考虑一下你希望从程序中获得什么样的行为,而不是想要使用什么样的语言功能。

答案 3 :(得分:1)

这个程序没有给你正确的答案,这就是你想通过引用传递的原因吗?或者具体情况是什么? 无论如何,为了让你通过引用传递,然后你从一个全局变量中移除高度并将其置于主体中,然后为你的原型包含一个引用参数,然后当你在main中调用它们传递你的局部变量时。 这是通过引用传递如何工作的示例。

#include<iostream>
using namespace std;

//Prototype
void add(int num1, int num2, int &res);
int main()
{
    int res;
    add(1, 2, res);
    cout<<"I got the value by passing my variable by reference"<<res<<endl;
    return 0;
}
void add(int num1, int num2, int &res)
{
    res = num1 + num2;
}