#include <stdio.h>
int main()
{ FILE *fp; long i,a[40]={1,1},s=2;
/****考生在以下空白处写入执行语句 ******/
for(i=3;i<=40;i++)
{
a[i]=a[i-2]+a[i-1];
s=s+a[i];
a[i-2]=a[i-1],a[i-1]=a[i];
}
printf("%d\n",a[33]);
/****考生在以上空白处写入执行语句 ******/
printf("%d\n",s);
fp=fopen("CD1.dat","wb");
fwrite(&s,4,1,fp);
fclose(fp);
}
这是求斐波那契前40项的和的代码,但是发现a[33]出现了数据溢出,a[33]变成了一个负数,请问这是什么原因,然后该怎么解决