Can';在C语言中不能使用标准差

Can';在C语言中不能使用标准差,c,math,standards,deviation,C,Math,Standards,Deviation,我想尽一切办法让标准偏差发挥作用。 我正在尝试制作一个程序来获取学生的分数(计数由用户决定),并计算分数的平均值和标准差。它计算平均罚款,但标准偏差为“7712160851427328.00” #包括 int main(){ int i; int j; 整数计数; int等级=0; int grades[5]={0};//Init 整数和=0; 浮动偏差和; 浮动平均值; 浮动标准差; printf(“给出计数:”); scanf(“%d”、&count); 对于(i=0;i

我想尽一切办法让标准偏差发挥作用。 我正在尝试制作一个程序来获取学生的分数(计数由用户决定),并计算分数的平均值和标准差。它计算平均罚款,但标准偏差为“7712160851427328.00”

#包括
int main(){
int i;
int j;
整数计数;
int等级=0;
int grades[5]={0};//Init
整数和=0;
浮动偏差和;
浮动平均值;
浮动标准差;
printf(“给出计数:”);
scanf(“%d”、&count);
对于(i=0;i对于(i=0;i当您进行整数除法时,您的平均值计算将失败,这将使后续的std dev计算不正确

更改:

mean = sum/count;


因此,除法是使用浮点运算来执行的。您可能还希望在这一点上打印平均值,以检查它是否合理。

您必须将偏差和初始化为零。否则它会将垃圾值作为其初始值

standard_deviation = sqrt(deviation_sum /count - 1);
应该是

standard_deviation = sqrt(deviation_sum / (count - 1));

请。

首先,避免这种类型的构造(
i
可能导致数组访问超出范围):


for(i=0;i第一个提示:您可以用
grades[grade]替换整个
switch
语句++
。第二个提示:除非你想让自己哭,否则不要使用名为
grades
grades
的两个变量。在更正了不同答案中指出的所有逻辑错误后,如果我将
0
输入到
count
,那么代码的输出会是什么?即使输入
1
也可能会很有趣。哇,4个答案,每个都指出了需要解决的4个不同问题。
standard_deviation = sqrt(deviation_sum /count - 1);
standard_deviation = sqrt(deviation_sum / (count - 1));
for(i = 0; i <= 5; i++){
      while(grades[i] == 0){
         i++;                
      }