问题:输入一个3<=n<=100的数n,显示前n项斐波那契数。
直接上代码
#include <stdio.h>
#include <stdlib.h>
struct fbnq{
int a[50];
int wei;
}a_1,a_2,a_1_temp;
int max(a,b){return a>b?a:b;}
//unsigned long long fbnq_1,fbnq_2;
void return_a_1_temp(int cnt)//计算一次即可得到a_3
{
int i,co_flag=0;
while(cnt--)
{
for(i=0;i<max(a_1.wei,a_2.wei);i++)//相加后的位数仅看高位
{
a_1_temp.a[i] = (a_1.a[i] + a_2.a[i] + co_flag)%10; //计算本位
co_flag = (a_1.a[i] + a_2.a[i] + co_flag)/10; //计算进位
}
if(i == max(a_1.wei,a_2.wei) && co_flag == 1)//最高位进位
{
a_1_temp.a[i] = 1;
a_1_temp.wei = i + 1;
}
else a_1_temp.wei = i;
a_2 = a_1;
a_1 = a_1_temp;//结构体拷贝
co_flag = 0;//进位标志位清空
for(i = a_1_temp.wei-1;i>=0;i--)
printf("%d",a_1_temp.a[i]);
printf("\n");
}
}
int main()
{
a_1.a[0] = 1;
a_2.a[0] = 1;
a_1.wei = 1;
a_2.wei = 1;
int fbnq_cnt;
scanf("%d",&fbnq_cnt);
printf("%d\n",1);
printf("%d\n",1);
return_a_1_temp(fbnq_cnt-2);
}
测试页面