㈠ 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语言兔子
那个i用来实现循环累加
这个其实就是Fibonacci数列的应用。
f(1)=f(2)=1 (i=1或者i=2)
f(i)=f(i-1)+f(i-2) (i>2)
附 几种求Fibonacci数列前20位的方法
#include<stdio.h>
int function(int n);
int main()
{
int i;
for(i=1;i<=20;i++)
printf("%d ",function(i));
printf("\n");
return 0;
}
int function(int n)
{
if(n==1||n==2)return 1;
else return function(n-1)+function(n-2);
}
********************************************************************************
#include<stdio.h>
int main()
{
int i,a[20];
for(i=0;i<20;i++)
{
if(i==0||i==1)a[i]=1;
else a[i]=a[i-1]+a[i-2];
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
********************************************************************************
#include <stdio.h>
int main()
{
int n;
int fn;
for(n=1;n<21;n++)
{
switch(n)
{
case 1:{fn=1;break;}
case 2:{fn=1;break;}
default:
{
int a=1,b=1,i,j;
for(i=3;i<=n;i++)
{
j=a+b;
a=b;
b=j;
}
fn=j;
}
}
printf("%d ",fn);
}
return 0;
}
㈢ 一道C语言的编程题,兔子洞的问题。
# include <stdio.h>
int main()
{
//Hole表示20个三洞 ,Hole【21】是为了数组下标从1开始,方便对题目的理解
//初始化为0,表示还没有被 灰狼搜索
int Hole[21] = {0};
int i = 1,j;
//进行15次循环,表示灰狼搜索了15次
for(j = 1; j <= 15; j++)
{
Hole[i] = 1; //将洞i设为1,表示编号为i的洞已经搜索了
//设置下一个要搜索的山洞编号,因为隔两个,所以加3
//比如,一开始是1,然后是i1+3=4,隔着2和3号洞
//最后对20取余,是为了不超出20的范围,比如搜索完19号洞后,加上3是22,22%20=2,下一个就搜索2号洞
i = (i + 3) % 20;
if(i == 0)
Hole[20] = 1; //如果i为20,下次设置被访问的将是Hole【0】 = 1,所以将Hole【20】单独考虑
}
//15次循环完后,1-20剩余Hole【】数组中为0的,是为被搜索的山洞
for(i = 1; i <= 20; i++)
{
if(Hole[i] == 0) //如果为被搜索,输出该山洞号,即兔子所在的洞
printf("%d ",i);
}
return 0;
}
㈣ 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>
#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;}