设计一求标准差函数,返回一个包含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;
}