① 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语言兔子繁殖问题
你好 可以创建一个数组a。
a[0]和a[1]都为1。
之后每一项都遵循a[n]=a[n-1]+a[n-2]。用for循环写。
由此依次列出每一项。每一项使用\t隔开。
需要一个count变量。每输出一个值count++
如果count求余5为0,输出一个\n。
最后就可以做到如图的输出,请给好评~
③ 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(m<2&&m<=24)
{
for(i=3;i<=m;i++)
{
tu3=tu1+tu2;
tu1=tu2;
tu2=tu3;
}
printf("%d月的兔子数为#d\n",m,tu3);
}
else
{
printf("月份书输入不符合要求,程序结束\n");
}
}
我们老师都讲这题了~
④ c语言题老师留的 兔子繁殖问题,用递归函数的方法做。 个位大神编一个然后写下答案请写上兔子多少只
//兔子的对数,就是Fibonacci数列
//1 1 2 3 5 8 13 21 34 55 89 ...
#include<stdio.h>
intf(intn)
{
if(n<3)
return1;
else
returnf(n-2)+f(n-1);
}
voidmain()
{
intn;
scanf("%d",&n);
printf("%d年后,有兔子%d只. ",n,f(n));
}
⑤ C语言编程:兔子繁殖问题
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM13
intmain()
{
inti;
longa[M]={1,1};
for(i=2;i<M;i++)
{
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<M;i++)
{
printf("%d月兔子总数:%d ",i,a[i]);
}
getch();
return0;}
⑥ c语言编程,求兔子问题。
因为只有6年,定义一个数组存储第n年各岁兔子的数量
#include<stdio.h>
int sum(int n)
{
int i,j,a[6];
a[0]=1; //初始化,第一年只有1对,都是1岁
for(i=1; i < 6; i++)
a[i] = 0; //初始化,第一年只有1对,其余为0
for(i=1; i < n; i++)
{//第n年x岁的兔子数是第n-1年x-1岁兔子的数量
// a[x] a[x-1]
for(j=5;j>0;j--)
a[j] = a[j-1];//7岁的就会死掉,直接丢弃
//到3岁就可以生一对,所以从3(数组从0开始,故这里是2)加到6
a[0] = a[2] + a[3] + a[4] + a[5];
}
return (a[0] + a[1] + a[2] + a[3] + a[4] + a[5]);
}
void main()
{
int i=1;
for(i=1; i < 25; i++)
{
printf("%-3d", i);
printf(":%5d\n", sum(i));
}
}
⑦ c语言编程:求兔子问题。
不知道我理解错没 兔子夫妻 在第六年 先生下一对 然后双双死亡
#include<stdio.h>
int fun(int n)
{
int sum;
for(int i=0;i<=n;i++)
{
if(i==7)sum=sum-1;
//到了第七年 开始的一对死掉了 不能再生了
if(i>=9)sum=sum-(fun(i-6)-fun(i-7));
//到了第九年 又开始死了
if(i<3)sum=1;
//前二年只有一对
if(i>=3)sum*=2;
//二年后每年兔子都会翻倍
}
return sum;
}
void main()
{
int n;
for(;;){
printf("请输入年数:");
scanf("%d",&n);
printf("有兔子:%d对\n",fun(n));
}
}
⑧ 用C语言编写鸡兔同笼问题
#include
<stdio.h>
void
main(
)
{
int
ret
=
0;
//
表示最后一个printf的返回值
while(1)
{
int
h,f,c,r;
printf("请输入头的数目:");
scanf("%d",&h);
printf("\n请输入脚的数目(必须为偶数):");
scanf("%d",&f);
while(f%2!=0
&&
f
!=
0
&&
h
!=
0)
//这里的不等于的条件可以不加
{
printf("\n输入脚的数目为奇数,请重新输入脚的数目(必须偶数):");
scanf("%d",&f);
if(
f
>
4h
||
f
<
2h)
continue;
}
for(c=0;c<=h;c++)
for(r=1;r<=h;r++)
//这句改成:for(r=0;
r
<=
h-c;
r++)好点,减少的循环的次数,加了效率
{
if(c+r==h&&2*c+4*r==f)
ret
=
printf("\n鸡的数目为%d,兔子的数目为%d\n\n",c,r);
}
if(
ret
==
39)
/*作用是输入一次成功后,结束大循环,
可以不要*/
break;
}
}
⑨ 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;
}