找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 238|回复: 1

C语言:在函数中计算数组元素的平均值并返回

[复制链接]

37

主题

21

回帖

241

积分

中级会员

积分
241
发表于 2026-3-26 11:53:02 | 显示全部楼层 |阅读模式
使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中, 函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数), 平均值通过形参返回给主函数, 将小于平均值且最接近平均值的数作为函数值返回, 并在主函数中输出。
例如, 有10个正数:46、30、32、40、6、17、45、15、48、26, 平均值为30.500000。
主函数中输出m = 30。
请在程序的下画线处填入正确的内容并把下画线删除, 使程序得出正确的结果。
注意:部分源程序在文件blank1.c中。
不得增行或删行, 也不得更改程序的结构 !

考点:数据类型及其运算

blank1.c代码
  1. #include  <stdlib.h>

  2. #include  <stdio.h>

  3. #define   N   10

  4. double fun(double  x[],double  *av)

  5. { int  i,j;    double  d,s;

  6.   s=0;

  7.   for(i=0; i<N; i++)  s = s +x[i];

  8. /**********found**********/

  9.   __1__=s/N;

  10.   d=32767;

  11.   for(i=0; i<N; i++)

  12.     if(x[i]<*av && *av - x[i]<=d){

  13. /**********found**********/

  14.       d=*av-x[i];

  15.           j=__2__;

  16.          }

  17. /**********found**********/

  18.   return  __3__;

  19. }

  20. void main()

  21. { int  i;    double  x[N],av,m;

  22.   for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}

  23.   printf("\n");

  24.   m=fun(x,&av);

  25.   printf("\nThe average is: %f\n",av);

  26.   printf("m=%5.1f ",m);

  27.   printf("\n");

  28. }
复制代码


37

主题

21

回帖

241

积分

中级会员

积分
241
 楼主| 发表于 2026-3-26 11:53:22 | 显示全部楼层
试题解读:
填空1:从原程序中可以看出*av代表的是平均值, 而s / N表示的就是平均值, 因此本空应该填*av。
填空2 : if语句来判断找最接近平均值的数, 因而此空应该填i。
填空3:题目要求将小于平均值且最接近平均值的数作为函数返回, 而j表达的是最接近平均值的数在数组中的下标, 因而本空应该填写x[j]。

参考答案:
(1) * av
(2) i
(3) x[j]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|郎哥嵌入式编程社区 ( 鲁ICP备15001146号-5 )

GMT+8, 2026-4-28 03:35 , Processed in 0.014768 second(s), 19 queries .

快速回复 返回顶部 返回列表