关于数组求Fibonacci的问题
本帖最后由 焦糖橙子 于 2018-1-31 13:46 编辑#include<stdio.h>
void main()
{
int a={1,1};
int n;
for(n=3;n<20;n++)
{
a=a+a;
printf("a%d=a%d+a%d=%d\n",n,n-1,n-2,a);
}
}
如何把前两个公式打印出来?
直接手动输入 你的数组越界了。
int a={1,1};表示定义了一个有20个整型元素的数组a,前两项赋初值为1。
首元素是a(不是a),最后一个元素是a(不是a)。你循环中的n能取到20,实际没有a,于是越界报错了。
C语言编译器对于越界并不会检测出来,也就是compile后没问题,有点坑,所以以后要小心越界问题。
加油( _) BngThea 发表于 2018-1-31 13:43
直接手动输入
输出的结果如图,就是不知道哪里不对 boot 发表于 2018-1-31 13:47
你的数组越界了。
int a={1,1};表示定义了一个有20个整型元素的数组a,前两项赋初值为1。
首元素 ...
{:10_266:}发现了,改好之后就变成图片中的样子了,这个程序还有什么地方不对吗? #include<stdio.h>
void main()
{
int a = {1,1};
int n;
for(n = 2; n < 20; n++)
{
a = a + a;
}
for ( n = 0; n < 20; n++ )
{
if ( n%5 == 0 )
{
printf("\n");
}
printf("a[%d] = %d\t", n+1, a);
}
printf("\n");
}
你的n取值错了,数组第一个数是a 焦糖橙子 发表于 2018-1-31 13:49
发现了,改好之后就变成图片中的样子了,这个程序还有什么地方不对吗?
第一个最好应该是
a=a+a;
所以循环给n赋初值2,就好啦
页:
[1]