for(i=0; i<NUM_STUDENTS; i++)
{
if(studentGrades[i]>=GRADE_BOUNDS[0])
{
cout<<"Student "<<k<<" got "<<studentGrades[i]<<" which is a(n) "<<GRADE_LETTERS[0]<<endl;
}
else if(studentGrades[i]<GRADE_BOUNDS[10])
{
cout<<"Student "<<k<<" got "<<studentGrades[i]<<" which is a(n) "<<GRADE_LETTERS[11]<<endl;
}
for(j=0; j<GRADE_COUNT; j++)
{
if(studentGrades[i]<GRADE_BOUNDS[j]&&studentGrades[i]>=GRADE_BOUNDS[j+1])
{
cout<<"Student "<<k<<" got "<<studentGrades[i]<<" which is a(n) "<<GRADE_LETTERS[j+1]<<endl;
break;
}
}
k++;
}
大家好,这是我在 stackoverflow 上的第一篇文章,我会尽量保持我的问题准确,我目前正在介绍编程,如果我的代码片段不是一流的,请原谅我仍在学习。我的任务是设计一个程序,该程序将接受 20 个学生等级 (0.0 - 100.0) 的用户输入。接受输入的 for 循环工作正常,我当前的问题是,当我输入一个小于 60 的值(在这种情况下被认为是 F)时,程序将输出“学生 k 得到 59,即 a(n ) F" 连续两次,但是当我输入任何大于 60 的值时,它都可以正常工作。为什么会这样?我将包括我在这个片段中使用的两个数组。最后的 k++ 只是一个累加器变量,用于计算学生数量。
我最初将所有三个 if 语句都放在嵌套的 for 循环中,但我的导师建议我将前两个移到外部循环,因为前两个 if 语句根本不使用变量“j”所以那里不需要将它们放在嵌套循环中。在我做出这个改变之前,它完美无缺。
**编辑忘记包含 GRADE_LETTERS 数组
const string GRADE_LETTERS[] = { "A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D+", "D", "D-", "F" };
const double GRADE_BOUNDS[] = { 92.0, 90.0, 87.0, 82.0, 80.0, 77.0, 72.0, 70.0, 67.0, 62.0, 60.0, 0.0 };
const int GRADE_COUNT = sizeof( GRADE_BOUNDS ) / sizeof( GRADE_BOUNDS[0] );