题目
设计函数求 N 个给定整数的均方差。若将 N 个数 A[ ] 的平均值记为 Avg,则均方差计算公式为: [(A 1 −Avg) 2 +(A 2 −Avg) 2 +⋯+(A N −Avg) 2 ]/N。
代码
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAXN 1000
double Average(double a[],int n);
void main(){
double ave,k,sum=0,msq;
int n,i,a[MAXN];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
ave=Average(a,n);
printf("平均数=%lf\n",ave);
for(i=0;i<n;i++){
k=a[i]-ave;
sum+=pow(k,2);
}
msq=sqrt(sum/n);
printf("%.5lf",msq);
}
double Average(int a[],int n){
double ave=0;
int sum=0,i;
for(i=0;i<n;i++){
sum+=a[i];
}
printf("sum=%d\n",sum);
ave=(double)sum/n;
printf("平均数=%lf\n",ave);
return ave;
}
注意
sqr(double x)函数内部必须是double类型的数据,c中double类型用%lf,注意小数点位数怎么输出。