填空题

下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动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 [i]=k; k+=2;} sum=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.0f"/a[i]); } printf{"\n\nThe result:\n"); for(i=0; i<k; i++) printf("%6.2f",b[i]); printf("\n\n"); }

【参考答案】

错误:if(i+1%5==0) 正确:if((i+1)%5==0)