题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
分析:兔子个数为斐波那契数列,1 1 2 3 5 8 13 ………
程序如下:
//数组法
#include <stdio.h>
#define N 50 //宏定义
int main()
{
int array[N]; //装每月兔子个数的数组
int i,month; //i为循环变量
printf("请输入月份:");
scanf("%d",&month);
array[0]=1;
array[1]=1;
for(i=0;i<month-1;i++)
{
array[i+2]=array[i+1]+array[i];
}
for(i=1;i<month+2;i++) //这个for循环中的“i=1,i<month+2,a[i-1]”格式是为了输出美观
{
printf("%-10d ",array[i-1]);
if(i%4==0) printf("\n");
}
return 0;
}
//我的理解:宏定义的方式便于改变数组的长度,先挖个坑,以后再补
//另一种方法,我觉得和数组的思路相似
#include <stdio.h>
int main()
{
int f1=1,f2=1;
int i; //i为循环变量
int month; //求第n(n为奇数)和n+1个月时,令month=(n+1)/2,如求第九和第十个月 month=5
printf("请输入月份:");
scanf("%d",&month);
for(i=1;i<=month;i++)
{
printf("%-10d %-10d",f1,f2);
if(i%2==0) printf("\n"); //控制四个一行
f1=f1+f2; //我觉得这儿有点像数组
f2=f2+f1;
}
return 0;
}