❶ c語言 兔子的繁殖問題(注意,就是按題目樣例要求輸入然後輸出,要一樣)
#include<stdio.h>
int main()
{
	int a[50];
	int i,t,n;
	a[0]=1;
	a[1]=1;
	for(i=2;i<50;i++)
        a[i]=a[i-1]+a[i-2];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        printf("%d\n",a[n]);
    }
	return 0;
}
❷ C語言編程:兔子繁殖問題
如圖,此題難度較大,要用到隊列(我優化為循環隊列)(此題有兩個提問,都是我回答所以一樣)
#include<stdio.h>
#defineLIFETIME13	//兔子壽命,單位半年(年齡小於此!)
#defineINITNUM1	//初始兔子有多少對
main()
{
	inthY=0;	//兔子歷(就是時刻表):單位:半年
	intnum[LIFETIME]={INITNUM,0};	//存儲不同年齡兔子的對數(初始為0歲1對)
//babyI下標代表0歲,往前年齡增大,越過數組下界跳到上界,所以babyI+1反而是最老兔子
	intbabyI=0;			//0歲兔子對應下標,年齡單位為半年
	intloveNum=0;			//可生育兔子數量
	inttotalNum=INITNUM;	//總計兔子數量
	intage1I=LIFETIME-2;	//1歲兔子對應下標(開始能生育)
	intage5_5I=LIFETIME-11;	//1歲、5.5歲兔子對應下標(剛好能生育、剛好不能生育年齡)
	intn=30;		//輸入n半年後!
	while(hY<=n){
		inti,j;	//遍歷臨時變數。①展示兔子數量。
		printf("第%.1f年	總計:%d對	可生育:%d對
",(float)hY/2,totalNum,loveNum);
		/*
		for(i=0;i<LIFETIME;i++){
			printf("%.1f歲	",(float)i/2);	//列印表頭
			//printf("%d,%.1f歲	",i,(float)(++i)/2);	//列印表頭
		}printf("單位:對
");	//換行*/
		i=babyI;	//顯示各年齡對應數量
		j=0;
		do{
			//printf("%d	",num[i]);
			if(hY<21){	//僅用於加	顯示
				if((++j)%2==0)printf("	");}
			printf("%d",num[i]);
			if(i>0)i--;		//下標循環往左移動
			elsei=LIFETIME-1;
		}while(i!=babyI);
		printf("
");		//換行
		//②半年後
		hY++;	//時間過去半年
		age1I=(age1I+1)%LIFETIME;	//1歲數量(對)對應下標
		age5_5I=(age5_5I+1)%LIFETIME;//5.5歲數量(對)對應下標
		//printf("%d,%d
",age1I,age5_5I);
		loveNum+=num[age1I]-num[age5_5I];	//可生育兔子數量(對)
		babyI=(babyI+1)%LIFETIME;		//新babyI設為原最老兔子的下標,
		totalNum+=loveNum-num[babyI];	//每對大兔子可以生一對小兔子-死亡的老兔
		num[babyI]=loveNum;	//老兔的位置換成新兔
	}
}
❸ C語言編程題目 兔子繁衍問題
方法一、用遞歸。
方法二、把兔子定義成結構,每個兔子自帶計時器變數,繁殖就是新建節點,構建結構鏈表。每次循環遍歷所有節點的計時變數大於3的就新建一個節點插入鏈表。最後統計節點數量。
我用方法1來寫:

#include <stdio.h>
int childbirth(int bMth,int gMth)//bMth:調用時傳0,gMth:經過的最大月數
{
int cnt=0,n=bMth,num=2;
while(n++<gMth+1)
if(cnt++>2)
num=num+childbirth(n,gMth+1);
return num;
}
int main()
{
int i,n;
printf("請輸入經過多少月:"),scanf("%d",&n);
for(i=1;i<=n;i++)
printf("經過%d個月後:兔子數量為:%d ",i,childbirth(0,i));
return 0;
}
❹ c語言數組 兔子繁殖
double a[100]; 
printf("第%d個月的兔子為:%0.2f\n", n, a[n-1]);
改一下
❺ C語言問題,這個代碼功能是怎麼實現的,幫我解釋下這個代碼
你圖中的代碼不對,題目明明說了3個月後開始生,你這代碼x明顯是總對數,月份從1開始,帶入這個代碼,先不管別的,第一次循環結束(也就是第二個月)x就是2對了。兔子剛出生1個月就生。
我寫得話,用一個數組做成長隊列,數組最後一個元素才是可以生育的兔子對數。下面是演示代碼(我理解題目說的「3月後開始生」,就是第4個月生,如你認為第3個月就開始生,自行修改常量即可):
代碼輸出兔子成長繁殖過程,常量包括初始兔子數量,繁殖增量,繁殖周期,可自行修改。
思路:代碼中變數數組x,每個元素分別對應:新生兔子數,1個月大的兔子數,2個月大的兔子數,3個月大的兔子數。每經過一個月數組前一個元素值會累加到後一個元素值表示成長,同時最後一個元素值就是生育的兔子,生育出的新生兔會放在第一個元素中,如此循環。變數cnt是累計總數。所有數值單位是對。

#include <stdio.h>
#define N 1
#define M 3//出生幾個月後開始生
#define RN 1//每對兔子每月生出對數
int main()
{
int n,i,cnt=N,x[M+1]={0},month=1;
x[0]=cnt;
do
printf("請輸入期望多少對兔子:"),scanf("%d",&n);
while(n>10000);
printf("第1個月,有新生兔子%d對 ",x[0]);
while(1)
{
month++;
for(i=M;i>0;i--)
x[i]+=x[i-1],x[i-1]=0;//未超3個月的兔子成長一個月
x[0]=x[M]*RN;//新當月出生的兔子進入成長隊列
for(i=0,cnt=0;i<=M;cnt+=x[i],i++);//統計兔子總數(單位:對)
printf("第%d個月,新生%d對,1個月大的%d對,2個月的%d對,3個月的%d對,共計%d對兔子 ",month,x[0],x[1],x[2],x
[3],cnt);
if(cnt>=n) break;
}
return 0;
}
❻ 兔子繁殖,C語言
#include<stdio.h>
intmain(void)
{
intn,i,a,b,c;
a=0;
b=1;
i=1;
printf("請輸入兔子對數n=");
scanf("%d",&n);
while(b<n){
c=a+b;/*while裡面一次循環是1個月*/
a=b;
b=c;
i++;
}
printf("至少%d月",i);
return0;
}
❼ C語言編程:兔子繁殖問題
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM13
intmain()
{
inti;
longa[M]={1,1};
for(i=2;i<M;i++)
{
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<M;i++)
{
printf("%d月兔子總數:%d ",i,a[i]);
}
getch();
return0;}
