【发布时间】:2012-11-10 11:29:36
【问题描述】:
我们被要求编写一个程序来生成斐波那契数列作为我们的作业。 所以我写了一个程序来生成前 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 行互换,我的代码会运行良好。即
# 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 语言三周,我们正在学习循环。
【问题讨论】:
-
在您的第一个替代方案中,您将
c传递给a和b。 -
@SameerSai 这只是讽刺:p 编程代码是逐行执行的。交换行 = 新算法
-
@Sameer Sai:侮辱你?不。你自己做的很好。
-
@Mitch 你可以把最后一条评论写得更好一些……
-
@MitchWheat:你自己从来都不是初学者吗? OP可能有一个糟糕的教练和英语问题,我们的反应是把他赶走?确实,“注定要失败”。
标签: c