重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
目前成都创新互联公司已为1000多家的企业提供了网站建设、域名、网站空间、网站托管、服务器托管、企业网站设计、晋宁网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
#include math.h
int main()
{
double a[100];
double tmp, sum, average, variance;
int count = 0;
scanf("%lf", tmp);
while (tmp = 0) {
a[count] = tmp;
count++;
scanf("%lf", tmp);
}
for (int i = 0; i count; i ++)
sum += a[i];
average = sum / count;
for (int i = 0; i count; i ++)
variance += (a[i] - average)*(a[i] - average);
variance /= count;
printf("The array is:\n");
for (int i = 0; i count; i ++)
printf("%.2lf ", a[i]);
printf("average=%.2lf, variance=%.2lf\n", average, variance);
return 0;
}
输入实数,空格隔开,输入负数终止,即-1结束输入
输入:
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 -1
输出结果:
//计算平均数,方差,标准差。
#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左右。说明系统自带的随机数发生器还是比较均匀的。
类型不匹配,方差和平均数都是float型,你两个函数的返回值都是int类型,且输出也是用的%d
由于没有指明数据的来源,下面就从文本文件"data.txt"中取出一些学生的身高数据,并计算平均值,方差和标准差!代码如下:
#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语言的编译更具有弹性。
#include stdio.h
#include math.h
#define N 100
int main()
{ int a[N],i,n;
float aver=0.0,ss=0.0;
scanf("%d",n);
for(i=0; in; i++)
{ scanf("%d",a[i]);
aver+=a[i]; //输入一个求一次平均值
}
aver/=n; //求出平均值
for(i=0; in; i++)
ss+=pow(a[i]-aver,2);
ss/=n-1;
printf("%.0f %.0f\n",aver,ss);
}