Я пишу код C, который вычисляет среднее значение меток. Он запрашивает у пользователя количество меток от 3 до 40. Если пользователь не вводит от 3 до 40, он снова запрашивает. Затем он запрашивает процентные доли и добавляет все, чтобы вычислить среднее значение. Вот мой код:Программирование C Loop Неверный расчет
#include<stdio.h>
int main()
{
int number_marks,i, a=1;
float grade, total, average;
printf("Please enter the number of marks (between 3 and 40): ");
scanf("%d", &number_marks);
if(number_marks>3 || number_marks<40)
{
do{
printf("Invalid number, enter a number between 3 and 40 inclusive: ");
scanf("%d",&number_marks);
}while(number_marks<3 || number_marks>40);
for(i=0;i<number_marks;i++)
{
printf("%d>",a++);
scanf("%f",&grade);
total=grade+grade+grade+grade+grade;
average= (total/number_marks);
}
}
printf("The average of all marks in this group is %.1f\n",average);
printf("Program Ended.");
return 0;
}
Проблема заключается в выходе вычислений. Кажется, что он выводит окончательный класс и не вычисляет среднее значение. Есть выход:
Please enter the number of marks (between 3 and 40): 2
Invalid number, enter a number between 3 and 40 inclusive: 41
Invalid number, enter a number between 3 and 40 inclusive: 5
1>45
2>90
3>57
4>89
5>32
The average of all marks in this group is 32.0
Program Ended.
'если (number_marks> 3 || number_marks <40)' всегда верно. (возможно, вы хотите '&&'?) – wildplasser
У вас так много логических ошибок в вашем коде ... –