这段代码标准差输出后结果不正确,求改法

c语言代码,剩下这段求标准差,但是运行后出现标准差和平均分结果一样,求改法

img

标准差算法错了吧,不应该是每个数减去平均数后的平方进行相加然后除以n,最后取根号吗
改成standard_num += (pow(average - score_1[i],2) / n);试试

以下的代码对你求标准差有帮助



//编写一个可以执行下列任务的C语言程序。
// 1.创建5个在2.0和10.0之间的随机实数。
// 2.显示这5个随机的实数,四舍五入到小数点后2位
// 3.计算下列各项。平均数、标准差(下面的表达式。
// 4.在屏幕上显示每个计算的结果。
// 5.计算5个随机实数中两个连续数的最大和。
// 显示最大和。 */
 
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){

    float a[5];
    int i;
    float avg=0.0;
    float standardDev=0.0;
    float max=0.0;
    //1、生产5个2.0~10.0的随机数
    //rand()%8:表示生产0-7的随机数
    //rand()%10/10.00:表示生产0.0-0.9的随机数
    //rand()%10/100.00:表示生产0.00-0.09的随机数
    for(i=0;i<5;i++){
        a[i]=rand()%8+2.0+rand()%10/10.00+rand()%10/100.00;
    }
    //2、输出随机数
    for(i=0;i<5;i++)
    {
        printf("%.2f ",a[i]);
    }
    printf("\n");//换行
    //3、求平均数
    for(i=0;i<5;i++)
    {
        avg+=a[i];
        if(i==4)
        {
            avg=avg/5.00;
            printf("平均数为:%.2f\n",avg);
        }
    }
    //4、求标准差
    for(i=0;i<5;i++)
    {
       standardDev+=pow(a[i]-avg,2);
       if(i==4)
        {
            standardDev=sqrt(standardDev/5.00);
            printf("标准差为:%.2f\n",standardDev);
        }
    }
    //5.计算5个随机实数中两个连续数的最大和
     for(i=1;i<5;i++)
    {
       if(a[i-1]+a[i]>max){max=a[i-1]+a[i];}
    }
    printf("两个连续数的最大和为:%.2f\n",max);
    return 0;
}