给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。 例如,有10个正数: 46、30、32、40、6、17、45、15、48、2

admin2018-03-28  26

问题 给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。
例如,有10个正数:
46、30、32、40、6、17、45、15、48、26,平均值为30. 500000。
    主函数中输出m=30。
    请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
    注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
  试题程序:
#include  < stdlib.h >
#include  < stdio.h >
#define N 10
double fun (double x[] ,double * av)
{int i,j; double d,s,
   s=0;
    【1】= s/N;
   d =32767;
     if(x < *av && *av - x
<=d){
/*********found*********/
  d= *av-x
  j  = 【2】
  }
/*********found*********/
  return 【3】
}
main ()
{ int i; double x[N],av,m;
  for(i=0;i<N,i++)
{ x=rand()%50;
printf("%4.0 f",x);}
   printf ("\n");
    m = fun (x, &av) ;
    printf ("\nThe average is:  % f\n"f
av) ;
    printf "’m = % 5 .lf ",m) ;
   printf ("\n") ,
}

选项

答案(1)*av (2)i (3)x[j]

解析 填空1:从原程序中可以看*av代表的是平均值,而s/N表示的就是平均值,因此本空应该填*av。
填空2:if语句来判断找最接近平均值的数,因而此空应该填i。
填空3:题目要求将小于平均值且最接近平均值的数作为函数返回,而j表达的是最接近平均值的数在数组中的下标,因而本空应该填写x[j]。
转载请注明原文地址:https://kaotiyun.com/show/1xxp777K
0

最新回复(0)