Я изучаю C из книги под названием «C по примеру»Расчеты Не работает должным образом
В конце каждой главы есть упражнение для завершения. Как вы можете видеть из приведенной ниже коды, упражнения написано в верхнем
/* Chapter 7 Review Exercises #2
- You are a college professor and you have to get the average grades for 10 students. Write a program which prompts you for 10 different grades and then
displays their average */
#include <stdio.h>
int main()
{
float score1, score2, score3, score4, score5, score6, score7, score8, score9, score10;
float average = score1+score2+score3+score4+score5+score6+score7+score8+score9+score10/10;
printf("Please input the scores of the students: \n");
scanf(" %f",&score1);
scanf(" %f",&score2);
scanf(" %f",&score3);
scanf(" %f",&score4);
scanf(" %f",&score5);
scanf(" %f",&score6);
scanf(" %f",&score7);
scanf(" %f",&score8);
scanf(" %f",&score9);
scanf(" %f",&score10);
printf("The average score is: %.2f" , average);
return 0;
}
Проблема здесь состоит в том, что каждый раз, когда входные I числа (при выполнении коды) Он всегда дает мне огромное количество назад (как минимум 20 номеров)
Есть ли способ ограничить число, или я делаю что-то неправильно?
Не могли бы вы предоставить [mcve]? Было бы легче ответить, если бы мы знали ваш вклад. – xenteros
Вам необходимо вычислить значение 'average' ** после ** ввода значений его компонентов ...... Или сделать' average' функцией, которая всегда будет перечитывать их по требованию. Как и в случае, ваша программа вызывает неопределенное поведение, читая (10) неинициализированную переменную (ы) и сохраняя ее в «среднем», которая не изменяется, если какой-либо из «оценок». –
Я дал вам ответ с исправленным кодом. Пожалуйста, не стесняйтесь использовать его. Он получил второе место дважды и дважды подавался другими ответчиками, чтобы продвигать их ответы:/Хорошая практика - отметить правильный ответ как решение с зеленым тиком и правильные ответы. – xenteros