C ++中的奇怪编码错误

时间:2016-04-15 07:57:59

标签: c++

我正在编写一个程序,该程序从包含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;
}

这是从中读取的文件的内容:

44 55 77 88
79 88 100 99
77 99 98 99
100 88 89 100
55 56 40 77
100 100 99 95
88 84 87 88
96 97 99 100
30 44 77 55
79 77 88 0
54 52 60 77
88 77 88 77
44 77 10 95

感谢您给予的任何帮助,我一直在为此感到痛苦 我只是看不出有什么问题。

1 个答案:

答案 0 :(得分: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';