改错题  
    数列中,第一项的值为3,后一项都比前一项的值增5;给定程序MODI1.c中函数fun的功能:计算前n(4<n<50)项的累加和;每累加一次把被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数。
    例如,当n的值为20时,该数列为3,8,13,18,23,28,…,93,98。符合此条件的累加值应为42,126,
366,570,1010。
    请改正函数fun中指定位置的错误,使它能得出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
    给定源程序如下:
#include <stdio.h>
#define    N    20
int  fun(int  n,int  *a)
{  int  i,j,k,sum;
/**************found**************/
  sum=j==0;
  for(k=3,i=0;i<n;i++,k+=5)
  {  sum=sum+k;
/**************found**************/
      if(sum%4=2)
        a[j++]=sum;
  }
  return  j;
}
main()
{  int  a[N],d,n,i;
  printf('\nEnter  n (4<n<=50):  ');scanf('%d',&n);
  d=fun(n,a);
  printf('\n\nThe result :\n');
  for(i=0; i<d; i++)printf('%6d',a[i]);printf('\n\n');
}
 
【正确答案】(1)sum=j=0; (2)if(sum%4==2) 答案考生文件夹
【答案解析】(1)将变量sum和j同时赋值为0。 (2)这里混淆了“==”与“=”的作用,“==”是比较运算符,“=”是赋值运算符。