C 我的项目赢了';t取输入数组元素的平均值
我还是个初学者,这个程序给我带来了一些麻烦。在计算作为数组级别[]元素的输入值的平均值之前,一切都正常工作 输出是一个表,在每个学生输入的成绩旁边列出了学生编号1到5。 我可以很好地显示学生人数和成绩,但程序似乎无法正确计算平均数。请帮忙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
#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()
的返回值,以确保每次都获得实际数据。要获得与以前相同的输出,他需要打印fn+1
,而不是n
。要获得与以前相同的输出,他需要打印fn+1
,而不是n
。