gpt4 book ai didi

c++ - C++ 中奇怪的编码错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:35 25 4
gpt4 key购买 nike

我正在编写一个程序,该程序从一个文本文件中读取多行数字,这些数字由 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';

关于c++ - C++ 中奇怪的编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36641418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com