C 我的项目赢了';t取输入数组元素的平均值

C 我的项目赢了';t取输入数组元素的平均值,c,arrays,average,C,Arrays,Average,我还是个初学者,这个程序给我带来了一些麻烦。在计算作为数组级别[]元素的输入值的平均值之前,一切都正常工作 输出是一个表,在每个学生输入的成绩旁边列出了学生编号1到5。 我可以很好地显示学生人数和成绩,但程序似乎无法正确计算平均数。请帮忙 #include <stdio.h> #include <stdlib.h> #include <math.h> void main() { float grade[5]; int n; for

我还是个初学者,这个程序给我带来了一些麻烦。在计算作为数组级别[]元素的输入值的平均值之前,一切都正常工作

输出是一个表,在每个学生输入的成绩旁边列出了学生编号1到5。 我可以很好地显示学生人数和成绩,但程序似乎无法正确计算平均数。请帮忙

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void main()
{    
   float grade[5];
   int n;

   for(n=1; n<=5; n++){
      printf("Enter grade %d between 0 and 100: ",n);
      scanf("%f", &grade[n]);
   }

   printf("\nStudent\t\tGrade\n");

   for(n=1; n<=5; n++){
       printf("%d\t\t%.1f\n\n",n ,grade[n]);
   }
   printf("--------------------\n");

   float avg = (grade[0] + grade[1] + grade[2] + grade[3] + grade[4]) / 5;
   printf("Average Grade:\t%.1f", avg);
}
#包括
#包括
#包括
void main()
{    
浮球等级[5];
int n;

for(n=1;n您的
for
循环不正确。具体而言,索引从0开始,例如,代替

for(n=1; n<=5; n++) {

for(n=1;n您的
for
循环不正确。具体而言,索引从0开始,例如,而不是

for(n=1; n<=5; n++) {

for(n=1;n数组索引从0开始,而不是从C中的1开始。当您计算平均值时,您得到了正确的结果,但当您执行循环以输入数据时,情况就不一样了。
因此,当您有:

for(n=1; n<=5; n++){
    printf("Enter grade %d between 0 and 100: ",n);
    scanf("%f", &grade[n]);
}

在C中,数组索引从0开始,而不是从1开始。当您计算平均值时,您得到了正确的结果,但当您执行循环以输入数据时,则不是这样。 因此,当您有:

for(n=1; n<=5; n++){
    printf("Enter grade %d between 0 and 100: ",n);
    scanf("%f", &grade[n]);
}

您还可以将
avg
的计算放在第二个循环中

avg = 0;
for(n=0; n<5; n++){
    printf("%d\t\t%.1f\n\n",n ,grade[n]);
    avg += grade[n];
}
avg=0;

对于(n=0;n您还可以将
avg
的计算放在第二个循环中

avg = 0;
for(n=0; n<5; n++){
    printf("%d\t\t%.1f\n\n",n ,grade[n]);
    avg += grade[n];
}
avg=0;

对于(n=0;nArray下标表示
float grade[5];
从0到4运行,而不是从1到5。因此,在扫描和打印时,您在数组中写入的内容超出了范围,导致未定义的行为。您的平均值使用未初始化的变量(
grade[0]
)。您应该检查
scanf()的返回值
以确保每次都能获得实际数据。
浮动等级[5];
的数组下标从0到4,而不是从1到5。因此,在扫描和打印时,在数组中写入超出范围,导致未定义的行为。平均值使用未初始化的变量(
等级[0]
)。您应该检查来自
scanf()
的返回值,以确保每次都获得实际数据。要获得与以前相同的输出,他需要打印f
n+1
,而不是
n
。要获得与以前相同的输出,他需要打印f
n+1
,而不是
n