我们被要求编写一个程序来生成斐波那契数列作为我们的作业。
所以我写了一个程序来生成前 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 语言三周,我们正在学习循环。
最佳答案
行按顺序执行,因此在第一个示例中 b
在 c
变为 a
之前变为 b
,实际上您将 c
分配给 a
和 b
创建某种指数级数(但为零)而不是斐波那契数列。
段错误意味着您的程序正在访问不允许访问内存的某个地方的内存,通常是因为您正在取消引用无效指针或越界访问数组。
关于c - 斐波那契数列错了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13321615/