Онлайн компилятор C

#include <stdio.h> int main() { int x, num=2, digit1=0, digit2=1, digit; scanf("%d", &x); printf("%d ", digit2); while(x>=num){ digit = digit1+ digit2; digit1=digit2; digit2=digit; printf("%d ", digit); num++; } return 0; }
这段代码试图输出斐波那契数列的前若干项,但存在逻辑错误。用户输入一个整数x,程序期望输出从第2项开始的x项,但实际输出与预期不符。

- 变量num从2开始递增,循环条件x>=num,这会导致循环执行的次数比x少1次,因为当num增加到x+1时才停止。例如输入5,只会输出4个数。
- 初始值digit1=0, digit2=1,但第一个输出的是digit2(即1),这跳过了第1项0。斐波那契数列通常从0,1开始,但你的输出从1开始,且缺少了第一项。