當前位置:編程學習大全網 - 源碼下載 - C語言編程:兔子繁殖問題

C語言編程:兔子繁殖問題

如圖,此題難度較大,要用到隊列(我優化為循環隊列)

運行結果,兔子數量變化符合斐波那契數列(下面壹行數字為0~6歲每半歲兔子數量)

如圖,如有疑問或不明白請追問哦!

源代碼如下:(網頁端比較好看哦)

#include<stdio.h>

#define?LIFETIME?13 //兔子壽命,單位半年(年齡小於此!)

#define?INITNUM?1 //初始兔子有多少對

main()

{

int?hY=0; //兔子歷(就是時刻表):單位:半年

int?num[LIFETIME]={INITNUM,0}; //存儲不同年齡兔子的對數(初始為0歲1對)

//babyI下標代表0歲,往前年齡增大,越過數組下界跳到上界,所以babyI+1反而是最老兔子

int?babyI=0; //0歲兔子對應下標,年齡單位為半年

int?loveNum=0; //可生育兔子數量

int?totalNum=INITNUM; //總計兔子數量

int?age1I=LIFETIME-2; //1歲兔子對應下標(開始能生育)

int?age5_5I=LIFETIME-11; //1歲、5.5歲兔子對應下標(剛好能生育、剛好不能生育年齡)

int?n=30; //輸入n半年後!

while(hY?<=?n){

int?i,j; //遍歷臨時變量。①展示兔子數量。

printf("第%.1f年\t總計:%d對\t可生育:%d對\n",(float)hY/2,totalNum,loveNum);

/*

for(i=0;?i<LIFETIME;?i++){

printf("%.1f歲\t",(float)i/2?); //打印表頭

//printf("%d,%.1f歲\t",i,(float)(++i)/2?); //打印表頭

}printf("單位:對\n"); //換行*/

i=babyI; //顯示各年齡對應數量

j=0;

do{

//printf("%d\t",num[i]);

if(hY<21){ //僅用於加\t顯示

if((++j)%2==0)printf("\t");}

printf("%d?",num[i]);

if(i>0)i--; //下標循環往左移動

else?i=LIFETIME-1;

}while(i!=babyI);

printf("\n"); //換行

//②半年後

hY++; //時間過去半年

age1I=?(age1I+1)%LIFETIME?; //1歲數量(對)對應下標

age5_5I=?(age5_5I+1)%LIFETIME?;//5.5歲數量(對)對應下標

//printf("%d,%d\n",age1I,age5_5I);

loveNum?+=?num[age1I]?-num[age5_5I]; //可生育兔子數量(對)

babyI?=?(babyI+1)%LIFETIME; //新babyI設為原最老兔子的下標,

totalNum?+=?loveNum?-?num[babyI]; //每對大兔子可以生壹對小兔子?-?死亡的老兔

num[babyI]?=?loveNum?; //老兔的位置換成新兔

}

}

  • 上一篇:網站制作
  • 下一篇:什麽是加權價,加權價怎麽計算?
  • copyright 2024編程學習大全網