Я не могу это объяснить, кроме того, что 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;
}
Say входит 2 студента, первый студент с 2 тестами, а затем ввести 45 87. Я должен получать 66.00, но я получаю 22.50. Для второго ученика я бы ввел 3 тестовых балла по 100 55 87, и я получил 48.33. Waaayyy выключен.
Я знаю, что я делаю что-то не так, но я не могу понять, потому что у меня было это раньше, но цикл не будет продолжаться до второго ученика.
Знаете ли вы, что 'fflush (stdin)' делает? – EOF
'if (i for (int j = 0; j
BLUEPIXY
@EOF Очищает буфер. Когда я не включаю его, моя программа заканчивается. Я вижу, насколько это избыточно, но я не знаю, почему мой код не будет стоять без них. – DSmith