输出斐波纳契数列的前n项,每次输出后用'\n'
换行.非常奇怪的是,当条目数量超过29
个时,输出就会出现问题.
这是我的源代码.最初的 idea 是输出40个项目.
#include <stdio.h>
#define N 40
int main(void)
{
int fib_number[N] = { 0, 1 };
printf("%d\n%d\n", 0, 1);
for (int i = 2; i < N; i++)
{
fib_number[i] = fib_number[i - 2] + fib_number[i - 1];
printf("%d\n", fib_number[i]);
}
return 0;
}
当N
为29
时,输出没有问题:
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
接下来是当N
是30
或大于30
时的情况,并且输出有一个小问题.
(N
=30)
1 1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
除了第一行没有任何数字和最后一行似乎缺失的换行符之外,还有一个微妙的问题:第二行1
之后有大量空格.
当N
等于40
时,问题就更严重了:
89
144
233
377
610
987
1597
2584
4181 89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
如果我用' '
替换'\n'
,输出就不会有问题:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986
这让我感觉非常糟糕,因为我只能try 为一个我不知道原因的问题更改实现.
有没有人能告诉我出了什么问题,否则我以后可能不能毫无顾虑地使用'\n'
.