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++;
}
大家好,输出误差,这是我的计算器上的第一篇文章,我会尽量保持我的问题准确,我目前在介绍编程所以请原谅我,如果我的片段是不是一流的我我还在学习。我负责设计一个程序,该程序将接受20个学生成绩(0.0 - 100.0)的用户输入。 for循环接受输入工作正常,我目前的问题是,当我输入一个小于60的值(在这种情况下被认为是F)时,程序将输出“Student k got 59 which is a(n )F“连续两次,但当我输入任何大于60的值时,它都可以正常工作。这是为什么发生?我将包含我在这个片段中使用的两个数组。最后的k ++只是一个累加器变量来保持学生的数量。并行阵列
我原来在嵌套for循环中有三条if语句,但我的教师建议我将其中的前两个移动到外部循环,因为前两个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]);
欢迎来到StackOverflow!感谢您付出努力发布代码上下文并精确地构建您的问题 - 这确实有帮助。快乐的编码! –