兔子繁衍问题(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;
    ——————————————————
    表格
    兔子繁殖

代码:

#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
  • 17
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值