有关斐波那契数列的C编程~

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:15:24
要求能算到50个数,可是用int会溢出啊~我是用数组迭代做的,想直接把int换成float,可那样结果就全是0了~~请问怎么解决呢?
新手啊~大家多多指教!
这个是我写的,大家能帮看一下吗?
#include <stdio.h>
#define M 50
main()
{
int fib[M];
int i;
int j=2;
fib[0]=1;fib[1]=1;
pritnf("Please input the index of the desired Fibonacci number (2--50): \n",i);
scanf("%d",&i);
while(j<=i)
{
fib[j]=fib[j-1]+fib[j-2];
j++;
}
printf("The %dth Fibonacci number is %d.\n",i+1,fib[i]);
}

可以把 int 换成 long,而在读写的时候建议换%d 成为 %ld。

如果是用float 在读写的时候换%d 成为 %f
如果是用double 在读写的时候换%d 成为 %lf

看了下你的程序没什么大毛病就是
数组越界了
数据溢出了
printf拼错了

改了下具体代码如下
#include <stdio.h>
#define M 50
main()
{
float fib[M];
int i;
int j=2;
fib[0]=1;fib[1]=1;
printf("Please input the index of the desired Fibonacci number (2--50): \n");
scanf("%d",&i);
while(j<i)
{
fib[j]=fib[j-1]+fib[j-2];
j++;
}
printf("The %dth Fibonacci number is %0.0f.\n",i+1,fib[i-1]);
}