填空题 1.  下列程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,则多余部分忽略不计。
    例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的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[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; 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.of",a[i]);
    }
    printf("\n\nThe result:\n");
    for (i=0; i<k; i++)
    printf("%6.2f",b[i]);
    printf("\n\n");
    }
  • 1、
【正确答案】 1、(1)sum=0.0;
   (2)if((i+1)%5==0)    
【答案解析】[考点]
   本题考查:if语句条件表达式,需注意其格式是否正确;变量定义和变量使用。
   
   (1)变量sum书写错误。
   (2)循环条件if(i+1%5==0)是一个运算逻辑错误,应先计算i+1,再对5求余。