下列程序中,函数fun的功能是:按顺序给S所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求平均值,并将这些值依次存放在W所指的数组中。若S所指数组中元素的个数不是5的倍数,则多余部分忽略不计。
例如,S所指数组有14个元素,则只对前lO个元素进行处理,不对最后的4个元素求平均值。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#define SIZE 20
fun(double*s,double*w)
int k,i;double sum;.
for(k=2,i=0;i<SIZE;i++)
(s[il=k;k+=2;
/********found********/
sun=0.0;
for(k=0,i=0;i<SIZE;i++)
(sum+=s[i];
/********found********/
if(i+1%5==0)
[w[k]=sum/5;sum=0;k++;)
return k;
main()
(double a[SIZE],b[SIZE/5];
int i,k;
k=fun(a,b);
printf("The original data:\n");
for(i=0;i<SIZE;i++)
if(i%5==0)printf("\n");
printf("%4.0"a[i]);
printf("\n\nThe result:\n");
for(i=0;i<k;i++)
printf("%6.2f",b[i];
printf("\n\n");
参考答案:sum=0.0;
(2)if((i+1)%5==0)
解析:
本题关键字有:if语句条件表达式;变量定义和变量使用。
[微分析]
(1)变量sum书写错误。
(2)对每5个元素求平均值,应先计算i+1,再对5求余,所以i+1要用小括号括起来。