兔子繁衍问题(C语言)

繁殖问题
现在有一对兔子,从出生起第三个月起每个月都生一对兔子。新生的一对兔子出生后第三个月也每月生一对兔子。假如兔子都不死。问到第几个月时,兔子总数为n对?

变量描述:
(注意问题和解题都是以“对”为单位的)

  • n1:幼年兔数量。(处于出生第一个月)
  • n2:过渡兔数量。(处于出生第二个月)
  • n :成年兔数量。(出生超过2个月 可以生小兔子的)
  • sum:兔子总数量。
    ——————————————————
    算法思路:
    计算第i个月的兔子总对数
    1.先算成年兔n的数量
    第i月成年兔对数=第i-1月成年兔对数+第i-1月的过渡兔对数。
    C语言描述:n=n+n2;
    2.再计算过渡兔对数
    第i月过渡兔对数=第i-1月幼年兔对数
    C语言描述:n2=n1;
    3.最后计算幼年兔对数
    第i月幼年兔对数=第i月成年兔对数
    C语言描述:n1=n;
    4.最后计算总兔子对数
    第i月总兔子对数=第i月幼年兔+过渡兔+成年兔
    C语言描述:sum=n1+n2+n;
    ——————————————————
    表格
    兔子繁衍问题(C语言)_第1张图片

代码:

#include<stdio.h>
int main(){	int num,i = 1;	
int n1 = 1,n2 = 0,n = 0,sum = 1;	
printf("请输入兔子总对数(至少为2):");	
scanf("%d",&num);	
printf("\n\n___________________________兔子繁殖表格___________________________\n") ;
printf("\n第i月\t幼年兔对数\t过渡兔对数\t成年兔对数\t兔子总对数\n"); 	
printf("%5d\t%10d\t%10d\t%10d\t%10d\n",i,n1,n2,n,sum) ;	
for(i=2;sum<num;++i)	
{		
n = n+n2;		
n2 = n1;		
n1 = n;		
sum = n1+n2+n;		printf("%5d\t%10d\t%10d\t%10d\t%10d\n",i,n1,n2,n,sum) ;	
}	
printf("____________________________________________________________________\n\n") ;	
printf("因此,第 %d 个月繁殖的兔子总对数为%d\n",i-1,num);    
return 0;
}

样例:

请输入兔子总对数(至少为2):6
___________________________兔子繁殖表格___________________________
第i月   幼年兔对数      过渡兔对数      成年兔对数      兔子总对数
    1            1               0               0               1    
    2            0               1               0               1    
    3            1               0               1               2    
    4            1               1               1               3    
    5            2               1               2               5    
    6            3               2               3               8
    ____________________________________________________________________
    因此,6 个月繁殖的兔子总对数为6

你可能感兴趣的:(C语言学习笔记)