十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
由于没有指明数据的来源,下面就从文本文件"data.txt"中取出一些学生的身高数据,并计算平均值,方差和标准差!代码如下:
创新互联于2013年创立,先为铜鼓等服务建站,铜鼓等地企业,进行企业商务咨询服务。为铜鼓企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
#includestdio.h
#include math.h
#define hh printf("\n===================================\n");
void main()
{
FILE *fp;
float a[520],x,avr,fc,bzc,t,sum=0.0;
int i,k=0;
fp=fopen("D:\\data.txt","r");
if(fp==NULL)
printf("文件打开失败!\n");
else
{
printf("身高数据:\n");
fscanf(fp,"%f",x);
while(x!=0)
{
a[k++]=x;
printf("%.0f ",x);
sum+=x;
fscanf(fp,"%f",x);
}
avr=sum/k;
sum=0;
for(i=0;ik;i++)
sum+=(a[i]-avr)*(a[i]-avr);
fc=sum/(k-1);
bzc=sqrt(fc);hh
printf(" 学生人数:%d\n",k);
printf(" 身高均值:%.2f\n",avr);
printf(" 身高方差:%.2f\n",fc);
printf("身高标准差:%.2f\n",bzc);
}
hh
fclose(fp);
}
扩展资料:
c语言的特点
1、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
2、C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
3、不同的变量类型可以用结构体(struct)组合在一起。
4、只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
5、部份的变量类型可以转换,例如整型和字符型变量。
6、通过指针(pointer),C语言可以容易的对存储器进行低级控制。
7、预编译处理(preprocessor)让C语言的编译更具有弹性。
#includestdio.h
#include"math.h"
main()
{
float sum=0,s=0,mean,stand;
int i,j,value,a[100],n=0;
printf("Input values (input -1 to stop):\n");
scanf("%d",value);
while(value!=-1n=100)
{
a[n]=value;
sum+=a[n];
scanf("%d",value);
n++;
}
mean=sum/n;
printf("Number of items: %d\n\n",n);
for(j=0;jn;j++)
s+=(a[j]-mean)*(a[j]-mean);
stand=sqrt(s/n);
printf("Mean:%f\n\n",mean);
printf("standard deviation:%f\n\n",stand);}
//计算平均数,方差,标准差。
#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;iN;++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左右。说明系统自带的随机数发生器还是比较均匀的。
1。求每一个数与这个样本数列的数学平均值之间的差,称均差;
2。计算每一个差的平方,称方差;
3。求它们的总和,再除以这个样本数列的项数得到均方差;
4。再开根号得到标准方差!
/* 方差和 */
double num[10]; //用10长度的数组举例
double sum = 0; //保存一下10个数的和
double pow2_sum = 0; //临时保存方差和
double __average; //临时保存均方差
double ans; //均方差
for(int i=0; i10; i++){
sum += num[i];
}
for(int i=0; i10; i++){
pow2_sum += pow(((sum/10)-num[i]), 2); //math.h平方函数求方差和
}
/* 求均方差 */
__average = pow2_sum/10;
/* 标准方差 */
ans = sqrt(__average);
#include "stdio.h"
#include "math.h"
#define N 100
void main()
{
int a[N],n,i;
float aver,s;
float sum=0,e=0;
printf("请输入样本量:");
scanf("%d",n);
printf("请输入%d个样本:",n);
for(i=0;in;i++)
{
scanf("%d",a[i]);
sum+=a[i];
}
aver=sum/n;
for(i=0;in;i++)
e+=(a[i]-aver)*(a[i]-aver);
e/=n-1;
s=sqrt(e);
printf("平均数为:%.2f,方差为:%.2f,标准差为:%.2f\n",aver,e,s);
}
#includestdio.h
#includestdlib.h
#includemath.h
double std_dev(double *data,int n); //计算标准差,传输数据为n个double类型数组
double relative(double *data,int n);//计算相对标准差。
int main(){
double data[100];
int i=0;
int n=0;
printf("最多输入99个数字,输入任意字母开始计算\n");
while(1){
if(scanf("%lf",data[i++])!=1)break;
n++;
}//while
printf("输入了%d个数据\n",n);
printf("std_dev:%g\n",std_dev(data,n));
printf("relative std_dev:%g%%\n",relative(data,n));
system("pause");
return 0;
}//main
double std_dev(double *data,int n){
double ret=0,average=0,sum=0;
int i=0;
double *p=data;
while(in){
sum+=*p;
p++;
i++;
}//while
average=sum/n;
sum=0;
p=data;
for(i=0;in;i++){
sum+=(*p - average)*(*p - average);
p++;
}//for
return sqrt(sum/n);
}//function std_dev
double relative(double *data,int n){
double ret=0,average=0,sum=0;
int i=0;
double *p=data;
while(in){
i++;
sum+=*p;
p++;
}//while
average=sum/n;
return std_dev(data,n)/average*100;
}//fun relative