用c语言定义一个函数,计算平均数,方差,标准差.(请用指针完成)
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/08/04 07:10:49
用c语言定义一个函数,计算平均数,方差,标准差.(请用指针完成)
![用c语言定义一个函数,计算平均数,方差,标准差.(请用指针完成)](/uploads/image/z/6333104-56-4.jpg?t=%E7%94%A8c%E8%AF%AD%E8%A8%80%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%2C%E8%AE%A1%E7%AE%97%E5%B9%B3%E5%9D%87%E6%95%B0%2C%E6%96%B9%E5%B7%AE%2C%E6%A0%87%E5%87%86%E5%B7%AE.%28%E8%AF%B7%E7%94%A8%E6%8C%87%E9%92%88%E5%AE%8C%E6%88%90%29)
//计算平均数,方差,标准差.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define N 100
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[N],pj,fc,bzc;
int i;
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);
printf("\nFinished!\n");
getch();
return 0;
}顺便做了一个测试:产生100个随机小数,得到其平均值大概在0.5左右,方差在0.08左右,标准差在0.28左右.说明系统自带的随机数发生器还是比较均匀的.
再问: 可以是输入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了。这种简单的修改应该要自己学着做,不能太依赖哦!
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define N 100
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[N],pj,fc,bzc;
int i;
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);
printf("\nFinished!\n");
getch();
return 0;
}顺便做了一个测试:产生100个随机小数,得到其平均值大概在0.5左右,方差在0.08左右,标准差在0.28左右.说明系统自带的随机数发生器还是比较均匀的.
再问: 可以是输入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了。这种简单的修改应该要自己学着做,不能太依赖哦!
用c语言定义一个函数,计算平均数,方差,标准差.(请用指针完成)
用C语言如何算平均数和方差及标准差
用EXCEL怎么计算平均数、方差、标准差?
c语言习题(指针)编写一个函数s(a,n),其中a是一个一维整型数组,n是数组长度,通过指针求数组中的平均数.(请用vi
求一个c语言程序:输入一组数,求其最大值,最小值,中位数,平均数,方差,标准差及其相关系数.
用Excel算样本平均数、样本方差和样本标准差
请用通俗易懂的正确语言解释一下方差、标准差、数学期望的意义
标准差的定义为啥不能用各个数字到平均数的距离的绝对值的和的平均数?而要用方差的开方?
深蓝雁计算机计算器如何计算平均数,方差,标准差
平均数、中位数、众数、方差、标准差、极差要怎么计算
得利计算器DL-1710怎样计算平均数、方差、标准差?
用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4];