C语言编程:计算一组整数的平均值和方差。

2024-10-30 18:01:24
推荐回答(3个)
回答(1):

我原有一个 y_statistics,给你改成int, 输出 mean,sigma,rms
#include
#include
#include

y_statistics(int *y, int N, float *ymean, float *ysigma, float *yrms)
{
int i;
float ys,yr,dy,ym;
double sum,sum2;
sum = 0.0;
for (i=0;iym = (float) ( sum / (double) (N) );
*ymean = ym;
sum = 0.0;
sum2 = 0.0;
for (i=0;idy = y[i] - ym;
sum = sum + dy * dy;
sum2 = sum2 + y[i] * y[i];
};
yr = (float) sqrt( sum2 / (double) N );
ys = (float) sqrt( sum / (double) (N-1) );

*ysigma = (float) ys;
*yrms = yr;
}

void main() {
int y[5]={2,3,4,5,6};
int N=5;
float ymean, ysigma, yrms;
y_statistics(&y[0], N, &ymean, &ysigma, &yrms);
printf("%f %f %f\n",ymean, ysigma, yrms);
}

回答(2):

关键代码如下:
a[n] = {...} //写代码输入整数 n代表整数个数,你自己定义
int nSum = 0;
for( int i = 0; i< n; i++)
{
nSum += a[i];
}
m = nSum / m; //如果要浮点数,就加上强制转换

方差:
int nDelta = 0;
for (int j =0; j{
nDelta += (a[i] - m) * (a[i] -m);
}
nDelta /= n;
nDelta = sqrt(nDelta);

回答(3):

#include
#include
#include
#define N 10

void main()
{
int i,x[N];
float m,c;
for(i=0;i x[i]=rand()%100;

m=0;
for(i=0;i m=m+x[i];
m=m/N;

c=0;
for(i=0;i c=c+x[i]-m)*(x[i]-m);
c=pow(c/N,0.5);

printf("%8.2f, %8.2f\n",m,c);
}