2017-10-06 276 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'}; 

还有其他的方法来做到这一点。 无论您使用什么来实现您的目标,您都需要根据您的决定修改程序。