我無法真正解釋它,只不過scanf()
只讀取第一個值,然後基於此計算出計算結果。scanf()只讀第一個輸入(數字)
int main() {
int i, students = 0;
char name[20];
int tests;
float test_score;
int test_sum = 0;
char letter_grade;
double test_average;
printf("Number of students: ");
scanf("%d", &students);
for (i = 0; i < students; i++) {
printf("\nStudent name %d: ", i + 1);
scanf(" %s", &name);
fflush(stdin);
printf("Number of test(s) for %s: ", name);
scanf("%d", &tests);
fflush(stdin);
printf("Enter %d test score(s) for %s: ", tests, name);
if (i < students) {
scanf("%f", &test_score);
test_sum += test_score;
test_average = test_sum/(float)tests;
}
printf("Average test score: %.2f", test_average);
fflush(stdin);
}
return 0;
}
說我進入2名學生,有2測試成績第一的學生,然後進入45 87.我應該得到66.00,但我得到22.50。對於第二個學生,我會輸入100 55 87的3個測試分數,而我得到48.33。 Waaayyy關閉。
我知道我做錯了什麼,但我無法弄清楚,因爲我之前工作過,但循環不會繼續給第二個學生。
你知道什麼'fflush(stdin)'做? – EOF
'if(i for(int j = 0; j
BLUEPIXY
@EOF清除緩衝區。當我不包含它時,我的程序結束。我確實看到它是多麼的多餘,但我不知道爲什麼我的代碼不會沒有它們。 – DSmith