请编写函数fun,其功能是:计算并输出给定10个数的 方差:(即:10个数的平均值) 其中 例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、 72.0、85.0、81.0、90.0、56.0,输出为s=11.730729。

admin2013-03-29  49

问题 请编写函数fun,其功能是:计算并输出给定10个数的
方差:(即:10个数的平均值)
其中
  例如,给定的10个数为95.0、89.0、76.0、65.0、88.0、
72.0、85.0、81.0、90.0、56.0,输出为s=11.730729。
  注意:部分源程序在文件PROGl.C中。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
double fun(double x[10])
{
}
NONO()
{/*请在此函数内打开文件,输入测试数据,
调用fun函数,输出数据,关闭文件。  */
  FILE*rf*wf;int i,j;double
s,x[10];
  rf=fopen("in.dat","r");
  wf=fopen("out.dat","w");
  for(i=0 ; i<5;i++){
    for(j=0  ; j<  10  ;  j++)
fscanf(rf,"%lf",&x[j]);
    s=fun(x);
    fprintf(wf,"%lf\n",s);
  }
  fclose(rf);fclose(wf);
}
main()
{double s,x[10]={95.0,89.0,76.0,
65.0,88.0,72.0,85.0,81.0,90.0,56.0};
    int i;
    printf("\nThe original data is:
\n");
  for(i=0;i<10;i++)print;f("%6.1f",
X);print:f("\n\n");
  s=furl(x);
  printf("s=%f\n\n",s);
  NONO();
}

选项

答案int i; double avg=0.0,sum=0.0,abs=0.0,fc; for(i=0;i<10 ;i++)sum+=x[i]; avg=sum/10; /*计算平均值*/ for(i=0;i<10;i++) abs+=(x[i]-aVg)*(x[i]一avg); fc=sqrt(abs/10); return fc;

解析 (1)首先计算x’的值,它的值是所有值累加求和的十分之一。
    (2)根号下的部分是前面求得x’与当前项差的平方的累加和的十分之一。
    (3)最后可以利用C语言库函数pow来计算平方根。
转载请注明原文地址:https://kaotiyun.com/show/zWJp777K
0

最新回复(0)