GhostNight9 2021-06-02 23:06 采纳率: 100%
浏览 29
已采纳

球球大佬帮忙看一下为什么会数据溢出,大一小白

#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]变成了一个负数,请问这是什么原因,然后该怎么解决

  • 写回答

3条回答 默认 最新

  • CSDN专家-Time 2021-06-02 23:22
    关注
    #include <vector>
    #include <stdio.h>
    #pragma warning(disable:4996)
    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <string.h>
    using namespace std;
    #include <graphics.h>
    #include <conio.h>
    #include <stdio.h>
    #include<windows.h>
    #include <time.h>
    #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];
            int temp = a[i - 2];
            a[i - 2] = a[i - 1];
            a[i - 1] = temp;
    
            temp = a[i - 1];
            a[i - 1] = a[i];
            a[i] = temp;
        }
        printf("%d\n", a[33]);
        /****考生在以上空白处写入执行语句 ******/
        printf("%d\n", s);
        fp = fopen("CD1.dat", "wb");
        fwrite(&s, 4, 1, fp);
        fclose(fp);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同