簡體   English   中英

C ++中的奇怪編碼錯誤

[英]Strange Coding Error in 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

謝謝你給予的任何幫助,我一直在為此苦惱,我只是看不出有什么問題。

正確的邏輯應該是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM