C程序中的斐波那契级数,其中前两个数由用户给定

C程序中的斐波那契级数,其中前两个数由用户给定,c,C,当第一个数字是1,第二个数字是2,长度是5,它应该是1 2 3 5 8。但是我的输出总是1234。我似乎找不到问题所在 另一个输入是2和5。输出为2 5 1 6 7。第三个数字1不应该在那里。我应该更改或添加什么 *这已经是一个提交的硬件,是的,这是错误的,我已经得到了扣除。现在我只想解决这个问题,这样我就可以研究它了 int main() { int i, lenght = 0, fib, sum, sum1, sum2, a, b, c; printf("\nFirst number

当第一个数字是
1
,第二个数字是
2
,长度是
5
,它应该是
1 2 3 5 8
。但是我的输出总是
1234
。我似乎找不到问题所在

另一个输入是
2
5
。输出为
2 5 1 6 7
。第三个数字1不应该在那里。我应该更改或添加什么

*这已经是一个提交的硬件,是的,这是错误的,我已经得到了扣除。现在我只想解决这个问题,这样我就可以研究它了

int main()
{
  int i, lenght = 0, fib, sum, sum1, sum2, a, b, c;
  printf("\nFirst number: ");
  scanf("%d", &a);
  printf("\nSecond number: ");
  scanf("%d", &b);
  printf("\nHow long?: ");
  scanf("%d", &lenght);

  {
    while ((a > b) || ((lenght < 2) || (lenght > 100)))
    {
      printf("\nFirst number: ");
      scanf("%d", &a);
      printf("\nSecond number: ");
      scanf("%d", &b);
      printf("\nHow long?: ");
      scanf("%d", &lenght);
    }
  }

  printf("%d\t%d\t", a, b);
  printf("%d\t", fib);
  for (i = 3; i < lenght; i++) {
    if (i <= 1) fib = i;
    else {
      a = b;
      b = fib;
      fib = a + b;
    }

    printf("%d\t", fib);
  }
}
intmain()
{
int i,长度=0,fib,sum,sum1,sum2,a,b,c;
printf(“\n第一个数字:”);
scanf(“%d”和“&a”);
printf(“\n第二个数字:”);
scanf(“%d”和“b”);
printf(“\n长度:”);
扫描频率(“%d”和长度);
{
而((a>b)| |((长度<2)| |(长度>100)))
{
printf(“\n第一个数字:”);
scanf(“%d”和“&a”);
printf(“\n第二个数字:”);
scanf(“%d”和“b”);
printf(“\n长度:”);
扫描频率(“%d”和长度);
}
}
printf(“%d\t%d\t”,a,b);
printf(“%d\t”,fib);
对于(i=3;i如果(i第一次打印
fib
(在
for
循环之前),您还没有为其分配任何内容。

第一次打印
fib
(在
for
循环之前),您还没有为其分配任何内容。

只需在打印
fib
值之前添加
fib=a+b;

在使用变量之前(尤其是在C中)初始化所有变量是一个很好的编码习惯。

只需在打印
fib
值之前添加
fib=a+b;

在使用之前初始化所有变量(特别是在C中)是一个很好的编码习惯。

我觉得你的代码很奇怪。我试图简化你的代码。请看一次:

int main()
{
    int a,b,next,last,i;
    printf("Enter the first Value:");
    scanf("%d",&a);
    printf("Enter the second Value:");
    scanf("%d",&b);
    printf("Enter the length of Fab. series:");
    scanf("%d",&last);
    printf("%d,%d,",a,b);
    for (i=3; i<= last; i++)
    {
    next = a + b;
    if(i<last)
    printf("%d,",next);
    else
    printf("%d",next);
    a = b;
    b = next;
    }
    return 0;
}
intmain()
{
int a,b,next,last,i;
printf(“输入第一个值:”);
scanf(“%d”和“&a”);
printf(“输入第二个值:”);
scanf(“%d”和“b”);
printf(“输入制造系列的长度:”);
scanf(“%d”,最后一次)(&last);
printf(“%d,%d,”,a,b);

对于(i=3;i您的代码对我来说似乎很奇怪。我试图简化您的代码。请看一次:

int main()
{
    int a,b,next,last,i;
    printf("Enter the first Value:");
    scanf("%d",&a);
    printf("Enter the second Value:");
    scanf("%d",&b);
    printf("Enter the length of Fab. series:");
    scanf("%d",&last);
    printf("%d,%d,",a,b);
    for (i=3; i<= last; i++)
    {
    next = a + b;
    if(i<last)
    printf("%d,",next);
    else
    printf("%d",next);
    a = b;
    b = next;
    }
    return 0;
}
intmain()
{
int a,b,next,last,i;
printf(“输入第一个值:”);
scanf(“%d”和“&a”);
printf(“输入第二个值:”);
scanf(“%d”和“b”);
printf(“输入制造系列的长度:”);
scanf(“%d”,最后一次)(&last);
printf(“%d,%d,”,a,b);

对于(i=3;i因为这是为了研究,所以代码有问题:您不需要重复对
scanf()
的调用,只需初始化其中一个变量就可以失败(您这样做了:
lenght=0
)让循环完成它的工作;选择一种缩进样式并坚持使用它;如果你对C语言不熟悉,请始终包括大括号,即使语言说它们是可选的;你(正确地)允许长度为2,但然后打印三个数字;你的
if(i 100 | a>b){
printf(“\n第一个数字:”);
(无效)scanf(“%d”和“&a”);
printf(“\n第二个数字:”);
(无效)scanf(“%d”和“b”);
printf(“\n长度:”);
(无效)扫描频率(“%d”和长度);
}
printf(“%d\t%d\t”,a,b);
for(int i=2;i

请注意,输入错误检查不足以防止出现问题。例如,
b
可以大于
a
,但如果您输入随机数,仍然会弄乱序列。您假设用户知道从斐波那契序列中输入两个相邻项,这很难测试。

因为这是为了研究,所以您会遇到问题r代码:您不需要重复对
scanf()
的调用,只需初始化一个变量就可以失败(您这样做了:
lenght=0
),然后让循环完成它的工作;选择一种缩进样式并坚持使用它;如果您是C新手,则始终包括花括号,即使语言说它们是可选的;您(正确地)允许长度为2,然后打印三个数字;您的
if(i 100 | a>b){
printf(“\n第一个数字:”);
(无效)scanf(“%d”和“&a”);
printf(“\n第二个数字:”);
(无效)scanf(“%d”和“b”);
printf(“\n长度:”);
(无效)扫描频率(“%d”和长度);
}
printf(“%d\t%d\t”,a,b);
for(int i=2;i

请注意,输入错误检查不足以防止出现问题。例如,
b
可以大于
a
,但如果您输入随机数,仍然会弄乱序列。您假设用户知道从fibonacci序列中输入两个相邻的项,这很难测试。

学习使用调试器以及如何单步执行thr通过您的代码一行一行地运行。当您这样做时,您可以看到发生了什么,看到所有相关变量的值,并监控它们的变化。以及如何格式化代码以便人们可以阅读:)请注意,
length
的拼写不包含序列
ht
。它不会影响编译器,但会影响阅读您代码的人。我知道拼写是错误的。我只是懒得在整个代码中拼写正确。哈哈哈。我在做这个问题时拼写正确,虽然我对这个问题还是新手,上个月刚学过这一点,所以我仍在调整代码的外观。学习使用调试器,以及如何逐行检查代码。这样做时,您可以看到发生了什么,看到所有涉及变量的值,并监视它们的变化。以及如何格式化代码,以便人们可以阅读:)请注意,
length
的拼写不包含序列
ht
。它不会影响编译器,但会影响阅读代码的人。我知道拼写是错误的