正如標題所說,它只輸出第一個 if 陳述句。我曾嘗試制作包含格式generalAverage < 97 && generalAverage >94并添加.00條件,但沒有任何效果。
#include<stdio.h>
char remarks[7][20] = {"Excellent", "Very Good", "Good", "Satisfactory", "Fair", "Passed", "Failed"}, opt;
float prelim, midterm, final, generalAverage, equivalent;
int main(){
do {
printf("STUDENT GRADE CALCULATOR\n");
printf(" Enter the Prelim Grade : ");
scanf(" %f", &prelim);
printf(" Enter the Midterm Grade : ");
scanf(" %f", &midterm);
printf(" Enter the Final Grade : ");
scanf(" %f", &final);
printf("\n");
generalAverage = (prelim midterm final) / 3;
if (generalAverage > 96) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 1.0\n");
printf(" Remarks : %s\n", remarks[0]);
}
else if (generalAverage < 97) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 1.25\n");
printf(" Remarks : %s\n", remarks[0]);
}
else if (generalAverage < 94) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 1.50\n");
printf(" Remarks : %s\n", remarks[1]);
}
else if (generalAverage < 89) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 1.75\n");
printf(" Remarks : %s\n", remarks[1]);
}
else if (generalAverage < 88) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 2.00\n");
printf(" Remarks : %s\n", remarks[2]);
}
else if (generalAverage < 85) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 2.25\n");
printf(" Remarks : %s\n", remarks[2]);
}
else if (generalAverage < 82) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 2.50\n");
printf(" Remarks : %s\n", remarks[3]);
}
else if (generalAverage < 77) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 2.75\n");
printf(" Remarks : %s\n", remarks[4]);
}
else if (generalAverage == 75) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 3.00\n");
printf(" Remarks : %s\n", remarks[5]);
}
else if (generalAverage < 75) {
printf(" The General Average is : %.2f\n", generalAverage);
printf(" Equivalent : 5.00\n");
printf(" Remarks : %s\n", remarks[6]);
}
printf("\n");
printf("Do you want to continue (Type y or n): ");
scanf(" %c", &opt);
}while(opt == 'Y'||opt == 'y');
}
uj5u.com熱心網友回復:
你應該檢查從“緊”,通過“更慷慨”到“其他”。
if (generalAverage < 75) {
}
else if (generalAverage == 75) {
}
else if (generalAverage < 77) {
}
else if (generalAverage < 82) {
}
else if (generalAverage < 85) {
}
else if (generalAverage < 88) {
}
else if (generalAverage < 89) {
}
else if (generalAverage < 94) {
}
else if (generalAverage < 97) {
} else {
}
如果您從(或早期擁有)慷慨的支票開始,例如
if (generalAverage < 97)
由于(否則是明智的)if-else 鏈,所有其余部分都將被忽略。
我認為您在 96.0 和 97.0 之間的值的值映射中也有意外重疊。這兩個條件<97又>96表現出“整數思維”。generalAverage 然而是浮動的,例如 96.5 匹配這兩個條件。由于奇怪的浮點數,finalelse而不是 an甚至比andelse if更巧妙地解決了問題。
比較浮點數學是否損壞?
如果您觀察到即使您認為的值需要該分支,也沒有被使用,那么“損壞的浮動”鏈接也應該解釋這一點。<97>=97==75
uj5u.com熱心網友回復:
第一個 if{} 和第二個 else if{ }block 考慮所有情況。
uj5u.com熱心網友回復:
如果順序錯誤,您的 else 。
如果 generalAverage 為 80,則如果它 < 97,它將始終進入第一個 else。
只需從最小的開始,然后逐步向上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/435954.html
下一篇:如果函式錯誤。不等于功能不作業
