我们被要求编写一个程序来生成斐波那契数列作为我们的作业。
所以我写了一个程序来生成前 n 个斐波那契数。这是我的第一个代码,它不能正常工作

# include <stdio.h>
void main()
{
    int a = -1, b = 1, c = 0, i, n, sum = 0 ;
    printf("Enter the limit : ") ;
    scanf("%d", &n) ;
    printf("\nThefibonacci series is : \n\n") ;

    for(i = 1 ; i <= n ; i++)
    {
        c = a + b ;
        printf("%d \t", c) ;
        b=c;
        a=b;
    }
}

所以我尝试了各种组合,我发现如果我互换第 12 行和第 13 行,我的代码会运行良好。 IE
# include <stdio.h>
void main()
{
    int a = -1, b = 1, c = 0, i, n, sum = 0 ;
    printf("Enter the limit : ") ;
    scanf("%d", &n) ;
    printf("\nThefibonacci series is : \n\n") ;
    for(i = 1 ; i <= n ; i++)
    {
        c = a + b ;
        printf("%d \t", c) ;
        a=b;
        b=c;
    }
}

道理是一样的。
为什么第一个代码给我错误的输出?

什么是段错误?(我的编译器经常告诉我我的代码中存在段错误)

P.S-我是初学者。刚接触 c 语言三周,我们正在学习循环。

最佳答案

行按顺序执行,因此在第一个示例中 bc 变为 a 之前变为 b ,实际上您将 c 分配给 ab 创建某种指数级数(但为零)而不是斐波那契数列。

段错误意味着您的程序正在访问不允许访问内存的某个地方的内存,通常是因为您正在取消引用无效指针或越界访问数组。

关于c - 斐波那契数列错了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13321615/

10-11 10:21