我试图计算用户输入的斐波那契序列。因此,如果用户输入10,程序将按顺序输出所有数字,最多10,在这种情况下是0,1,1,2,3,5,8
这是我的代码:

#include <stdio.h>
int main ()
{
    /* variable definition: */
    int a, b, usrNumber;
    /* Initialize */
    a = 0;
    b = 1;
    usrNumber = 0;
    /* Ask user for number */
    printf("Please enter a positive number\n");
    scanf("%d", &usrNumber);
    /* Conduct Loop */
    while (b < usrNumber)
    {
        printf("%d \n",a);
        a += b;
        printf("%d \n",b);
        b += a;
    }
    return(0);
}

当我运行10和60时,序列会比预期的短一个数字。当我运行90或300时,序列会按预期工作。有没有想过为什么我不能让低一点的数字发挥作用?

最佳答案

代替使用每个循环两个步骤,可以使用辅助变量。

while (b < usrNumber) {
  aux=b;
  b+=a;
  a=aux;
  printf("%d ",b);}

10-06 06:48