当前位置:首页 » 编程语言 » c语言男兔子

c语言男兔子

发布时间: 2025-03-01 05:14:22

‘壹’ 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语言编程:兔子繁殖问题

思路不要乱。这个月的兔子只有两个来源,一个来源是上个月的老兔子,另一个来源是这个月刚出生的兔子,而这个月刚出生的兔子,就是两个月前的所有兔子,因为两个月前的所有兔子,无论两个月前就是老的,还是两个月前刚生的,到了这个月就全部具有生育能力,每只都可以下一对儿,所以可以得到一个递推关系f(n) = f(n - 1) + f(n - 2)。那么程序自然是

longfun(intmonth)
{
if(month==1||month==2)
return1;
else
returnfun(month-1)+fun(month-2);
}
//ConsoleApplication1.cpp:定义控制台应用程序的入口点。
intmain()
{
intMon;
longNum;
scanf("%d",&Mon);
Num=fun(Mon);
printf("第%d月共有兔子%ld只 ",Mon,Num);
return0;
}

至于你的程序,很难把它改正确,因为这题压根不是那个思路,那样想会越想越乱的

‘叁’ C语言编写鸡兔同笼的问题

#include"stdio.h"
int main()
{
int M,N,x,y; /*x表示鸡数,y表示兔数*/
printf("请输入总头数和总脚数:");
scanf("%d%d",&M,&N);
x=(4*M-N)/2;
y=(N-2*M)/2;
if(x+y==M&&2*x+4*y==N) printf("%d %d",x,y);
else printf("0");
}
希望采纳

‘肆’ 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语言:兔子繁殖问题

兔子的对数,就是Fibonacci数列
#include <stdio.h>
long f(long n)
{
if(n<3) return 1;
else return f(n-2)+f(n-1);
}
void main()
{
printf("一年后,有兔子%ld对.\n", f(12));
getch();
}
---------------------------------------------------------
1 1 2 3 5 8 13 21 34 55 89 ...

‘陆’ 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语言

#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语言编程 兔子鸽子问题

判断error的情况有问题。其实这题列出公式就可以解答了:
设x只鸽子,已知兔子,则:
x+y=n;
2x+4y=m;
解得:x=2n-m/2,y=m/2-n。

因为x,y都是非负整数,所以 m/2 必须是一个整数,也就是m必须是偶数。同时:
x=2n-m/2>=0,解得4n>=m;
y=m/2-n>=0,解得m>=2n;
因此 2n<=m<=4n,且m是偶数。这就是判断是否“Error”的条件。

#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned int n,m;
while(scanf("%d%d",&n,&m)&&!(m==0&&n==0))
{
if(m%2!=0 || m<2*n || m>4*n)
printf("Error\n");
else
printf("%d %d\n",(2*n-m/2),(m/2-n));
}
return 0;
}

‘玖’ c语言 鸡兔同笼

#include<stdio.h>

int main()

{ int f,i;

scanf("%d",&f);

printf("鸡 兔 ");

for(i=1;i<f/4;i++)

printf("%d %d ",(f-4*i)/2,i);

return 0;

}

热点内容
创建图书管理数据库 发布:2025-03-01 08:27:56 浏览:821
小红伞访问被拒绝 发布:2025-03-01 08:27:53 浏览:634
pro文件中预编译 发布:2025-03-01 08:22:29 浏览:614
游戏服务器推荐山河云 发布:2025-03-01 08:17:17 浏览:471
linux进程的地址空间 发布:2025-03-01 08:17:08 浏览:387
十指树算法 发布:2025-03-01 08:16:35 浏览:744
c语言指定位 发布:2025-03-01 08:11:44 浏览:46
怎么放wifi服务器才能穿墙 发布:2025-03-01 08:09:30 浏览:409
c语言开发web 发布:2025-03-01 08:06:42 浏览:322
鸿鹄源码 发布:2025-03-01 08:03:08 浏览:929