每當運行下面的C++程序時,即使輸入等級值如84或76,我也會得到相同的輸出「A」。我是混淆爲什麼輸出總是「A」而不是它應該基於數字等級輸入的等級字母值。我知道這很可能是我的代碼中的邏輯錯誤,但我似乎無法理解爲什麼。C++:將保存的char值顯示到屏幕上
char letterGrade;
int scoreGrade;
cout << "Enter Course Name: ";
cin >> courseName;
cout << "Score Grade Recieved: ";
cin >> scoreGrade;
while (scoreGrade < 0 || scoreGrade > 100) {
cout << "Invalid Entry, Enter Score Grade: ";
cin >> scoreGrade;
}
if (scoreGrade >= 90 || scoreGrade <= 100) {
letterGrade = 'A';
}
else if (scoreGrade >= 80 || scoreGrade < 90) {
letterGrade = 'B';
}
else if (scoreGrade >= 70 || scoreGrade < 80) {
letterGrade = 'C';
}
else if (scoreGrade >= 60 || scoreGrade < 70) {
letterGrade = 'D';
}
else
letterGrade = 'F';
cout << letterGrade;
解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –
讓我試着解釋一下這種情況的含義:scoreGrade> = 90 || scoreGrade <= 100'。如果'scoreGrade> = 90'爲true或**'scoreGrade <= 100',則該條件將被評估爲true。所以,舉例來說,如果'scoreGrade'是1000000,那麼將會是真的,如果'scoreGrade'是-1000000000000,我會是真的。你可能想要的是給出一個「A」,如果它在90到100之間,但這不是正確的做法。我不會告訴你正確的方法,因爲我認爲這對你來說是一個很好的挑戰。 – nbro