首页 > 解决方案 > 为什么我得到 s=-1807786450?

问题描述

斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

通过考虑斐波那契数列中值不超过四百万的项,求偶数项之和。

#include<stdio.h>
#include<stdlib.h>
int main (void)
{
    int a=0,b=1,c,s=0;
    int i=1,f=0;
    
    while(i<100000)
    {
        c=a+b;
        if(c%2==0)  
        {
            //printf("c=%ld \n",c);
            s+=c; 
            //f++;
        }
        
        a=b;
        b=c;
        i++;
    }   
    printf("s=%d ",s);
    //  printf("f=%ld",f);
}

标签: c

解决方案


因为你没有初始化 a 和 b,所以它们包含垃圾。例如,如果您使 a =0 和 b = 0,您的 s 值将变为 0。


推荐阅读