填空题

给定程序中, 函数 fun 的功能是: 计算形参 x 所指数组中 N 个数的平均值(规定所有数均为正数), 将所指数组中小于平均值的数据移至数组的前部, 大于等于平均值的数据移至 x 所指数组的后部, 平均值作为函数值返回, 在主函数中输出平均值和移动后的数据。
例如, 有 10 个正数: 46 30 32 40 6 17 45 15 48 26, 平均值为: 30.500000。
移动后的输出为: 30 6 17 15 26 46 32 40 45 48
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
不得增行或删行, 也不得更改程序的结构!
给定源程序:
#include<stdlib.h>
#include<stdio.h>
#define N 10
double fun(double *x)
{ int i, j; double av, y[N];
av=0;
/**********found**********/
for(i=0; i<N; i++)av+=______;
for(i=j=0; i<N; i++)
if(x[i]<av){
/**********found**********/
y[j]=x[i]; x[i]=-1; ______;}
i=0;
while(i<N)
{ if(x[i]!=-1)y[j++]=x[i];
/**********found**********/
______;
}
for(i=0; i<N; i++)x[i]=y[i];
return av;
}
main()
{ int i; double x[N];
for(i=0; i<N; i++){x[i]=rand()%50;
printf("%4.0f", x[i]);}
printf("\n");
printf("\nThe average is:%f\n", fun(x));
printf("\nThe result:\n", fun(x));
for(i=0; i<N; i++)printf("%5.0f", x[i]);
printf("\n");
}

【正确答案】

(1)x[i]/N
(2)j++或 i++j
(3)i++或++i

【答案解析】

填空 1: av 代表平均值, 本题考查了怎样求平均值, 因此本空应该填写x[i]/N。
填空 2: 通过 for 循环和 if 判断找到 x[i]中比平均值小的数, 并把这些值赋值给 y[j], 因此本空应该填写 j++或者++j。
填空 3: 通过 while 循环语句, 把 x[i]中比平均值大的数放在数组 y 的后半部分, 因此本空应该填写 i++或者++i。