最近飞机票最便宜的:请帮我实现这个C语言编程题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 00:40:32
编程 求Fibonacci数列:1,1,2,3,5,8,……的前40个数(下面这种样式输出) 谢谢!

1 1 2 3
5 8 13 21
34 .^^^……
233
1597
10946
75025
514229
3524578
24157817

经过验证:
一楼的有语法错误。
二楼的不符合题意。
三楼的结果不对。
这个题用递归调用比较简单。
经过验证下面程序是正确的并且符合题意。
#include <stdio.h>
#include <conio.h>
#define N 40
long fib(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else return fib(n-1)+fib(n-2);
}
main()
{
int i;
clrscr();
for(i=1;i<=N;i++)
{
printf("%ld ",fib(i));
if(i%4==0)
printf("\n");
}
getch();
}

main()
{
int x[100],i;
x[1]=1,x[2]=1;
for(i=3;i<=40;i++)
x[i]=x[i-1]+x[i-2];
printf(\"%d %d %d %d\",x[1],x[2],x[3],x[4]);
printf(\"%d %d %d %d\",x[5],x[6],x[7],x[8]);
f(i=9;i<=40;i++)
printf(\"%d \\n\",x[i]);
}

main()
{
int i;
float a,s,d;
a=1;
s=1;
printf("%f\n%f\n",a,s);
for(i=3;i<=40;i++)
{
d=a+s;
printf("%f\n",d);
a=s;s=d;
}
getch();
}
数太大了,超范围只能用单精度表示了

#include<stdio.h>
void main()
{
int i,n=1;
long double f1=1,f2=1;
for(i=1;i<=40;i++)
{
printf("%.0lf\t%.0lf\t",f1,f2);
f1=f1+f2;
f2=f1+f2;
n++;
if(n==3)
{
putchar('\n');
n=1;
}
}
}