问答题
给定程序中,函数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
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
给定源程序:
#include
#include
#define N 10
double fun(double *x)
{ int i, j; double av, y[N];
av=0;
/**********found**********/
for(i=0; i
for(i=j=0; i
if( x[i]
/**********found**********/
y[j]=x[i]; x[i]=-1; __2__;}
i=0;
while(i
{ if( x[i]!= -1 ) y[j++]=x[i];
/**********found**********/
__3__;
}
for(i=0; i
return av;
}
main()
{ int i; double x[N];
for(i=0; i4.0f ",x[i]);}
printf("/n");
printf("/nThe average is: %f/n",fun(x));
printf("/nThe result :/n",fun(x));
for(i=0; i5.0f ",x[i]);
printf("/n");
}
【正确答案】第一处:求出N个数的平均值,所以应填:N。
第二处:利用for循环语句,把数组x中小于平均值的数,依次存放到数组y中,其中位置由变量j来控制,所以应填:j++。
第三处:i是while循环体的控制变量,每做一次循环均要加1。
【答案解析】