0

试图制作一个简单的函数来将存储在辅助函数中的值返回给 DEV-C++ 中的主函数,但我不确定它为什么不起作用:/

我真的觉得它应该可以正确运行,但是当我编译和运行程序时,它不会要求输入值并显示 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;
}
4

3 回答 3

3

您没有分配的返回值有两个问题getIQ()

 double iq = getIQ() ;

你需要一个cinin getIQ()

double getIQ()
{
    double iq = 0.0;

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

另外,我建议不要使用system("pause"),请参阅System(“pause”); - 为什么错了?反对 using using namespace std;,请参阅Why is 'using namespace std;' 在 C++ 中被认为是一种不好的做法?.

于 2013-03-20T02:23:33.073 回答
2

你很亲近,

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

iq = getIQ();

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

你也可以这样做:

double iq = getIQ();

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

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

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

于 2013-03-20T02:22:26.067 回答
1

问题是您没有将 getIQ() 的返回值分配给 iq 并且您的 getIQ() 函数没有接收用户输入。实际上,您可以通过进行一些重构来摆脱该 iq 变量:Inline 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;
}
于 2013-03-20T02:29:38.523 回答