#include <stdio.h>
float grades_average(float grades[7]);
int main() {
float grades[7]={98.8, 97.9, 99.3, 99.8, 99.6, 99.4, 99.9};
float average;
average = grades_average(grades);
printf("Average is: %.2f",average);
return 1;
}
float grades_average(float grades[7]){
int i;
float sum = 0;
float average = 0.0;
/* calculate the sum of grades using for loop*/
for(i = 0; i <= 7; i++){
sum = sum + grades[7];
}
average = sum/7;
return average;
}
输出是:
Average is: 0.00
最小改变解决方案:
float grades_average(float grades[7]){
int i;
float sum = 0;
float average = 0.0;
/* calculate the sum of grades using for loop*/
for(i = 0; i < 7; i++){
sum = sum + grades[i];
}
average = sum/7.f;
return average;
}
Change for(i = 0; i <= 7; i++){ to for(i = 0; i < 7; i++){。有效的成绩指数仅为 0-6。 7 超出范围。
Change sum = sum + grades[7]; to sum = sum + grades[i];您需要一遍又一遍地检查每个元素,而不是(超出)最后一个元素。
Change average = sum/7; to average = sum/7.f; The .f确保没有整数除法。这在除法期间保留了小数。