C++ C+中的奇怪编码错误+;

C++ C+中的奇怪编码错误+;,c++,C++,我正在编写一个程序,从一个文本文件中读取由4列组成的多行数字,这些数字表示多个学生在一个教室中进行的4次测试 读完一行后,程序应该计算每个学生的平均成绩,然后给他们一个字母分数。我把它编码成这样。 问题是,尽管平均数是毫无问题地计算出来的,但第一个学生的字母分数不会显示出来。我是否忽略了一个错误 代码如下: #include <iostream> #include <fstream> using namespace std; int main() { ifst

我正在编写一个程序,从一个文本文件中读取由4列组成的多行数字,这些数字表示多个学生在一个教室中进行的4次测试

读完一行后,程序应该计算每个学生的平均成绩,然后给他们一个字母分数。我把它编码成这样。 问题是,尽管平均数是毫无问题地计算出来的,但第一个学生的字母分数不会显示出来。我是否忽略了一个错误

代码如下:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream calcGrades;
    calcGrades.open ("grades.txt");

    int test1, test2, test3, test4;
    int studentNum = 1;


    while(calcGrades.good())
    {
        calcGrades >> test1 >> test2 >> test3 >> test4;
        int average = (test1 + test2 + test3 + test4)/4;
        char letterGrade;
        if(average<60)
            letterGrade='F';
        if(average<=60 && average<70)
            letterGrade='D';
        if(average>=70 && average<80)
            letterGrade='C';
        if(average>=80 && average<90)
            letterGrade='B';
        if(average>=90)
            letterGrade='A';
        cout << "Student " << studentNum
             << "'s average is " << average
             << " they currently have a " << letterGrade
             << "." << endl;
        studentNum++;
    }

    return 0;
}
谢谢你给我的任何帮助,我一直为此而苦恼
我只是看不出哪里出了问题。

正确的逻辑应该是:

if(average<60)
letterGrade='F';
else if(average>=60 && average<70) 
//             ^^
letterGrade='D';
else if(average>=70 && average<80)
letterGrade='C';
else if(average>=80 && average<90)
letterGrade='B';
else if(average>=90)
letterGrade='A';
if(平均值=60&&average=70&&average=80&&average=90)
等级为A级;

正确的逻辑应该是:

if(average<60)
letterGrade='F';
else if(average>=60 && average<70) 
//             ^^
letterGrade='D';
else if(average>=70 && average<80)
letterGrade='C';
else if(average>=80 && average<90)
letterGrade='B';
else if(average>=90)
letterGrade='A';
if(平均值=60&&average=70&&average=80&&average=90)
等级为A级;

另请参见“不知道谁投票关闭此网站”,因为缺少代码无效信息。观察到的输出被清楚地提到,代码是MCVE,并且提供了输入数据。更确切地说,它应该被标记为打字错误,一旦输入了打字错误,它就不可复制。“我把它编码成这样。”——计算机完全按照我们告诉它们的去做。如果观察到的结果不符合预期,我们没有告诉他们我们认为我们告诉了他们什么,并且必须检查我们的假设。;-)另请参阅“不知道是谁投票关闭此项”,因为缺少代码无法工作的信息。观察到的输出被清楚地提到,代码是MCVE,并且提供了输入数据。更确切地说,它应该被标记为打字错误,一旦输入了打字错误,它就不可复制。“我把它编码成这样。”——计算机完全按照我们告诉它们的去做。如果观察到的输出不符合预期,我们没有告诉他们我们认为我们告诉了他们什么,并且必须检查我们的假设。;-@VCP,任何关于声誉如何提高以及整个Stackoverflow如何运作的想法,我都是新手。@AtulAgarawal:。事实上,检查一下整个FAQ,它写得很好。@VCP,任何关于声誉如何提高以及整个Stackoverflow如何工作的想法,我都是新手。@AtulAgarawal:。事实上,检查整个FAQ,它写得很好。