c语言代码,剩下这段求标准差,但是运行后出现标准差和平均分结果一样,求改法
标准差算法错了吧,不应该是每个数减去平均数后的平方进行相加然后除以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;
}