c语言使用指针求10个数的均方差,用c语言定义一个函数,计算平均数,方差,标准差。(请用指针完成)...

匿名用户

1级

2015-01-06 回答

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

//计算平均数,方差,标准差。

#include 

#include 

#include 

#include 

#include 

#define N 100

voidTongJi(doublea[],intn,double*aver,double*vari,double*stdDev){

//对长度为n的数组a进行统计,统计其平均值aver、方差vari、标准差stdDev

inti;

double*p,aver2;

*aver=0.0;

for(p=a+(n-1);p>=a;--p){

*aver+=*p;//累加各元素

aver2+=(*p)*(*p);//累加各元素的平方

}

*aver/=n;//求平均值

aver2/=n;//求平方的平均值

*vari=aver2-(*aver)*(*aver);//计算方差

*stdDev=sqrt(*vari);//计算标准差

}

intmain(){

doublea[N],pj,fc,bzc;

inti;

srand(time(NULL));

for(i=0;i

a[i]=rand()/(RAND_MAX+1.0); //产生随机小数[0,1)

printf("%lg ",a[i]);

}

TongJi(a,N,&pj,&fc,&bzc);

printf("\nPingJun=%lg, FangCha=%lg, BiaoZhunCha=%lg",pj,fc,bzc);

printf("\nFinished!\n");

getch();

return0;

}

顺便做了一个测试:产生100个随机小数,得到其平均值大概在0.5左右,方差在0.08左右,标准差在0.28左右。说明系统自带的随机数发生器还是比较均匀的。

追问:

可以是输入100个数吗?

追答:

你的意思是要让数组长度可变吗?也可以:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

//计算平均数,方差,标准差。

#include 

#include 

#include 

#include 

#include 

voidTongJi(doublea[],intn,double*aver,double*vari,double*stdDev){

//对长度为n的数组a进行统计,统计其平均值aver、方差vari、标准差stdDev

inti;

double*p,aver2;

*aver=0.0;

for(p=a+(n-1);p>=a;--p){

*aver+=*p;//累加各元素

aver2+=(*p)*(*p);//累加各元素的平方

}

*aver/=n;//求平均值

aver2/=n;//求平方的平均值

*vari=aver2-(*aver)*(*aver);//计算方差

*stdDev=sqrt(*vari);//计算标准差

}

intmain(){

double*a,pj,fc,bzc;

inti,N;

printf("Input N:"); scanf("%d",&N);

a=(double*)malloc(sizeof(double)*N);//为a分配数组内存空间

if(!a)return0;//如果分配失败,退出

srand(time(NULL));

for(i=0;i

a[i]=rand()/(RAND_MAX+1.0); //产生随机小数[0,1)

printf("%lg ",a[i]);

}

TongJi(a,N,&pj,&fc,&bzc);

printf("\nPingJun=%lg, FangCha=%lg, BiaoZhunCha=%lg",pj,fc,bzc);

free(a);//释放a数组所占空间

printf("\nFinished!\n");

getch();

return0;

}

追问:

不是,我是指我可以自己输入一组数据。比如,我要输入一组学生的成绩,求其平均值,方差,标准差。

追答:

删除语句

srand(time(NULL));

将语句:

a[i]=rand()/(1.0+RAND_MAX);

修改为:

scanf("%lf",&a[i]);

OK了。这种简单的修改应该要自己学着做,不能太依赖哦!

你可能感兴趣的:(c语言使用指针求10个数的均方差,用c语言定义一个函数,计算平均数,方差,标准差。(请用指针完成)...)