问答题 下列程序中,函数fun的功能是: 按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在W所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。 例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序:#include < stdio.h >#define SIZE 20fun(double*s,double*w){ int k,i;double sum; for(k=2,i=0;i < SIZE,i++) { s[i]=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;SLIm=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”); printti("%4.of",a[i]); } printf("/n/nThe result:/n"); for(i=0 j i < kj i++) printf("%6.2f",b[i]); printf("/n/n"); }
【正确答案】正确答案:(1)sum =0.0; (2)if((i+1)%5==0)
【答案解析】解析:本题考查:if语句条件表达式,需注意其格式是否正确;变量定义和变量使用。 (1)变量sum书写错误。 (2)循环条件if(i+1%5==0)是一个运算逻辑错误,应先计算i+1,再对5求余。