设计一求标准差函数,返回一个包含n个元素的数组元素的标准差。

设计一求标准差函数,返回一个包含n个元素的数组元素的标准差。

代码如下:

/**
标准偏差公式:S = Sqrt( ∑( (xi-x_平均)*xi-x_平均) ) /(N-1)))
公式中∑代表总和,x_平均代表x的均值,^2代表二次方,Sqrt代表平方根.   
1.计算总和:sum
2.统计个数:count
3.计算平均值:avg=sum/count;
5.平方累加求和sum2=(x1-avg)^2+(x1-avg)^2+...+(xn-avg)^2
6.标准偏差除以个数减一 sum2/(count-1)
*/
#include <stdio.h>
#include <math.h>
 
double bzc(double array[],int n)
{
	int i;
	double sum=0.0;//总和
	double avg;//平均值
	double temp=0;
	double Spow=0;
	for(i=0;i<n;i++)
	{
		sum+=array[i];//求总和
	}
	avg=sum/n;//计算平均值
	//printf("avg=%lf\n",avg);//70,对的
	
	for(i=0;i<n;i++)
	{
		Spow+=(array[i]-avg)*(array[i]-avg);//平方累加
	}
	return sqrt(Spow/(n-1));
}


int main()
{
    double array[100]={0};
	int n,i;
	double val;
	printf("请输入数组大小:");
	scanf("%d",&n);
	printf("请输入数组元素:");
	for(i = 0; i < n; i++)
		scanf("%lf",&array[i]);
    
	val = bzc(array,n);
	
    printf("标准偏差为:%f\n",val);
    return 0;
 
}