我正在編寫計算標記平均值的C代碼。它要求用戶輸入3到40之間的標記數。如果用戶沒有在3和40之間輸入,它會再次詢問。然後它會要求標記百分比,並將其加起來計算平均值。這裏是我的代碼:編程C循環錯誤計算
#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
你的代碼中有太多邏輯錯誤... –