2013-03-20 77 views
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; 
} 
+0

'cout'只輸出東西。使用'cin'輸入內容。您也不使用函數的返回值。你只需執行它,扔掉智商。 – chris 2013-03-20 02:21:44

+0

'cout'不讀取輸入:http://www.cplusplus.com/reference/iostream/cin/ – 2013-03-20 02:21:53

回答

3

有兩個問題你是不是分配的getIQ()返回值:

double iq = getIQ() ; 

,你需要一個在cingetIQ()

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++?

+0

我做了改變,這有幫助,但現在當它提示我進入智商時,它已經有0但它仍然允許我輸入一個值,但是然後它重複要求我輸入一個值,並在輸入值後再運行程序的其餘部分。 – user2040308 2013-03-20 02:30:42

+0

好吧,我想清楚了。我有兩個: double iq = getIQ(); getIQ(); – user2040308 2013-03-20 02:33:09

2

你很近,

你只需要從getIQ函數的返回值存儲到iq

iq = getIQ(); 

這將存儲由getIQ返回到iq雙您之前設置的變量。

你也可以這樣做:

double iq = getIQ(); 

要顯示getIQ的東西,你應該輸入你獲得行更改爲:

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

不要忘記檢查,如果他們輸入一個數字或不是。

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; 
}