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!感謝您付出努力發佈代碼上下文並精確地構建您的問題 - 這確實有幫助。快樂的編碼! –