用数组计算并存放斐波那契数列的前n个数,有下列关系式:
f[0]=f[1]=1
f[n]=f[n-1]+f[n-2]
//斐波那契数列用数组再议
#include <stdio.h>
#define MAXN 46 //定义符号常量
int main(void)
{
int i,n;
int fib[MAXN]={1,1}; //数组初始化,生成斐波那契数列的前两位数
printf("Enter n:");
scanf("%d",&n);
if(n>=1&&n<=46){
//计算斐波那契数列的剩余n-2个数
for(i=2;i<n;i++){
fib[i]=fib[i-1]+fib[i-2];
}
//输出斐波那契数列
for(i=0;i<n;i++){
printf("%6d",fib[i]);
if((i+1)%5==0){ //每行输出5个数
printf("\n");
}
}
if(n%5!=0){ //如果总数不是5的倍数,换行
printf("\n");
}
}else{
printf("Invalid Value.\n");
}
return 0;
}
测试用例
Enter n:10
1 1 2 3 5
8 13 21 34 55
程序首部通过宏观定义的方式定义了一个符号常量MAXN,其值固定为46,主函数中出现MAXN的位置一律用46替换。