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

问题描述:

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

//计算平均数,方差,标准差.#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <time.h>#include <math.h>#define N 1...可以是输入100个数吗?

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

//计算平均数,方差,标准差。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void TongJi(double a[],int n,double *aver,double *vari,double *stdDev){
 //对长度为n的数组a进行统计,统计其平均值aver、方差vari、标准差stdDev
 int i;
 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);//计算标准差
}
int main(){
 double *a,pj,fc,bzc;
 int i,N;
 printf("Input N:"); scanf("%d",&N);
 a=(double *)malloc(sizeof(double)*N);//为a分配数组内存空间
 if(!a)return 0;//如果分配失败,退出
 srand(time(NULL));
 for(i=0;i<N;++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();
 return 0;
}
不是,我是指我可以自己输入一组数据。比如,我要输入一组学生的成绩,求其平均值,方差,标准差。删除语句
srand(time(NULL));
将语句:
a[i]=rand()/(1.0+RAND_MAX);
修改为:
scanf("%lf",&a[i]);
OK了。这种简单的修改应该要自己学着做,不能太依赖哦!