2017-10-06 165 views
-4

在我的年級平均代碼中,我有字母等級a,b,c,d和f,但是當我嘗試運行它時,這是因爲我的信沒有在這個範圍。我不知道這是什麼意思。'c'未在此範圍內聲明

這裏是我的代碼:

#include<iostream> 

using namespace std; 

string average(int g); 

int main() 
{ 
    int grade; 

    cout << "Enter your grade:" << endl; 
    cin >> grade; 

    cout << "Your grade is a" << average(grade) << "!" << endl; 

    return 0; 
} 

string average(int g) 
{ 
    if (g >= 90 && g <= 100) 
    { 
     return a; 
    } 
    else if(g >= 80 && g <90) 
    { 
     return b; 
    } 
    else if (g > 70 && g < 80) 
    { 
     return c; 
    } 
    else if (g == 70) 
    { 
     return d; 
    } 
    else if (g < 70) 
    { 
     return f; 
    } 

    return 0; 
} 
+0

嘗試'返回「a」'而不是'返回a'。在第一種情況下,它返回等級字符串/文本「a」。在第二種情況下(在你的原始代碼中),它試圖尋找不在範圍內的變量'a'。這就是它向你投訴的抱怨。 – kaza

+0

這並沒有解決這個問題,但是你不需要'if ... else if'梯形圖中的所有'<'檢查。如果g是95,則第一個分支將被採用,而第二個分支中的g <90不起作用。第二次測試在所有其他表達式中都是相同的。所以:如果(g> = 90)...否則如果(g> = 80)...否則如果(g> = 70)...否則...' –

回答

-1

你無處申報年級 - A,B,C,d,E,F在你的程序。 編譯器如何知道a表示grade-a,b表示grade-b等等。

你或許可以用枚舉申報等級,這樣的 -

enum grades {a='a', b='b', c='c', d='d', e='e', f='f'}; 

還有其他的方法來做到這一點。 無論您使用什麼來實現您的目標,您都需要根據您的決定修改程序。