多个函数和返回值的麻烦

时间:2013-03-20 02:18:50

标签: c++ function return void

尝试创建一个简单的函数,将存储在辅助函数中的值返回给DEV-C ++中的main函数,我不确定它为什么不工作:/

我真的觉得它应该正常运行但是当我编译并运行程序时,它不会要求输入值并显示0,并且当0为输入值时,显示与语句一致的句子。

// This program asks user to enter IQ score and then displays a message

#include<iostream>
using namespace std;

double getIQ();

int main()
{
    double iq = 0.0;

    getIQ();

    if (iq > 120)
    {
        cout << "You are a genius" << endl;
    }
    else
    {
        cout << "You don't need a high IQ to be a successful person" << endl;
    }

    system("pause");
    return 0;
}

double getIQ()
{
    double iq = 0.0;

    cout << "Enter IQ score: " << iq << endl;
    return iq;
}

3 个答案:

答案 0 :(得分:3)

有两个问题,你没有指定getIQ()的返回值:

 double iq = getIQ() ;

您需要cin中的getIQ()

double getIQ()
{
    double iq = 0.0;

    cout << "Enter IQ score: " ;
    cin >> iq ;
    return iq;
}

此外,我建议不要“使用system("pause"),请参阅System(“pause”); - Why is it wrong?,反对使用using namespace std;,请参阅Why is 'using namespace std;' considered a bad practice in C++?

答案 1 :(得分:2)

你非常接近,

您只需将getIQ函数返回的值存储到iq

iq = getIQ();

这会将getIQ返回的double存储到您之前设置的iq变量中。

你也可以这样做:

double iq = getIQ();

要显示getIQ中的内容,您应该将输入获取行更改为:

cout << "Enter IQ Score";
cin >> iq;
cout << endl;

不要忘记检查他们是否输入了数字。

答案 2 :(得分:1)

问题是您没有将getIQ()的返回值分配给iq,并且您的getIQ()函数没有接收用户输入。实际上你可以通过做一些重构来摆脱那个iq变量:内联temp(根据Martin Fowler的重构书)。因为iq是一个临时变量来保存getIQ()函数的返回值。这样可以避免出错。同时,您需要使getIQ()函数返回用户输入,如其他答案中所示。

int main()
{
    if (getIQ() > 120)
    {
        cout << "You are a genius" << endl;
    }
    else
   {
       cout << "You don't need a high IQ to be a successful person" << endl;
   }

   cin.get();//you can use cin.get() in C++;
   return 0;
}