给定程序MODll.C中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在W所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。 例如,s所指数组有14个元

admin2013-04-02  37

问题 给定程序MODll.C中函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在W所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
    例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
    请改正程序中的错误,使它能得出正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include
#define SIZE 20
fun(double *s, double w)
{int k,i; double sum;
   for(k=2,i=0;i   {s=k; k+=2;}
/**********found**********/
   sun=0.0;
   for(k=0,i=0;i   {sum+=s;
/**********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   {if(i%5==0) printf("\n");
      printf("%4.0f", a);
   }
   printf("\n\nThe result :\n");
   for(i=0; i);
   printf("\n\n");
}

选项

答案sum=0.0; if((i+1)%5== 0)

解析 (1)在第一标识下“sun=0.0;”,根据题意,这是给sum赋值,而sun没有定义编译时会提示错误,应改为“sum=0.0;”。
(2)错误标识下的if判断语句是依顺序取五个字符,if中的逻辑表达式语法有误,由于1%5恒等于1,所以i+1%5也就等价于i+1了,所以将“if(i+1%5==0)”改为“if((i+1)%5== 0)”,此处主要注意的是运算符的优先级。
转载请注明原文地址:https://jikaoti.com/ti/bin0FFFM
0

最新回复(0)