今天给各位分享c语言兔子问题思路的知识,其中也会对c语言兔子问题的题目和答案进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、c语言程序:兔子问题2、C语言编程:兔子繁殖问题3、C语言兔子问题4、c语言题目 兔子繁衍问题 希望能给我详细讲讲思路 ,5、C语言迭代法兔子繁殖问题
c语言程序:兔子问题
#include stdio.h
main()
{
int i,tu1,tu2,tu3,m;
tu1=1;
tu2=1;
pringf(“请输入月份数(要求不大于24)”);
scanf(“%d”,m);
if(m==1||m==2)
{
printf(“有一对兔子”);
}
else if(m2m=24)
{
for(i=3;i=m;i++)
{
tu3=tu1+tu2;
tu1=tu2;
tu2=tu3;
}
printf(“%d月的兔子数为#d\n”,m,tu3);
}
else
{
printf(“月份书输入不符合要求,程序结束\n”);
}
}
我们老师都讲这题了~
C语言编程:兔子繁殖问题
如图,此题难度较大,要用到队列(我优化为循环队列)(此题有两个提问,都是我回答所以一样)
运行结果,兔子数量变化符合斐波那契数列(下面一行数字为0~6岁每半岁兔子数量)
源代码:(网页端才完整)
#includestdio.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; iLIFETIME; 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(hY21){//仅用于加\t显示
if((++j)%2==0)printf(“\t”);}
printf(“%d “,num[i]);
if(i0)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 ;//老兔的位置换成新兔
}
}
C语言兔子问题
#includestdio.h
int main(void)
{
int n,i,a,b,c;
a=0;
b=1;
i=1;
printf(“请输入兔子对数n=”);
scanf(“%d”,n);
while(bn){
c=a+b; /*while里面一次循环是1个月*/
a=b;
b=c;
i++;
}
printf(“至少%d月”,i);
return 0;
}
c语言题目 兔子繁衍问题 希望能给我详细讲讲思路 ,
#include “stdio.h”
int onemonth=1;
int twomonth=0;
int other=0;
int main()
{
int n;
int i=0;
printf(“请输入一个正整数:”);
scanf(“%d”,n);
for(i=1;;i++)
{
int a=onemonth,b=twomonth,c=other;
onemonth=c;
twomonth=a;
other+=b;
if(onemonth+twomonth+other=n)
{
printf(“第%d个月数量将达到%d,为:%d\n”,i,n,onemonth+twomonth+other);
break;
}
}
return 0;
}
思路很简单,就是循环月数+1,把兔子分为3类,一个月后能繁衍的,2个月后能繁衍的,3个月后能繁衍的,每次循环统计每类的个数就行了,一个简单的逻辑问题
C语言迭代法兔子繁殖问题
#includestdio.h
int main(void)
{
long f1=1,f2=1;//定义数量
int i;//定义循环
int n;//定义月份
printf(“请输入月数:”);
scanf(“%d”,n);
if(i%2==1)//第奇数项,i%2必为1
{
n=(n+1)/2;//每一轮计算两项,要n=1时计算1轮;n=3时计算2轮
}
else
{
n=n/2;//每一轮计算两项,要n=2时计算1轮;n=4时计算2轮
}
for(i=1;i=n;i++)
{
printf(“第%d月有%d只\n”,i*2-1,f1);//每一轮计算2项,且奇数项在f1中
printf(“第%d月有%d只\n”,i*2,f2);//每一轮计算2项,且偶数数项在f2中
f1=f1+f2; //下一个奇数项
f2=f1+f2; //下一个偶数项
}
return 0;
}
关于c语言兔子问题思路和c语言兔子问题的题目和答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。