『壹』 c語言程序設計 兔子

#include<stdio.h>
#include<stdlib.h>
int main()
{
int year;
int sum;
int i;
int a = 1;
int b = 1;

printf("Enter how many years: ");
scanf("%d",&year);

for(i=2;i<2 * year;i++){
if(i % 2 == 1){
a += b;
sum = a;
}
else{
b += a;
sum = b;
}
}
printf("There has %d rabbits after %d years.\n",year,sum);
return 0;
}

『貳』 C語言斐波那契數列兔子問題

#include<stdio.h>
intmain()
{
intf1=1,f2=1;
inti;
for(i=1;i<=20;i++)
{
printf("%12d%12d",f1,f2);//去掉
if(i%2==0)printf(" ");//去掉條件表達式的雙引號
f1=f1+f2;
f2=f2+f1;
}
return0;
}

『叄』 c語言兔子問題

#include<stdio.h>
intmain()
{inti,n,a,b,c;
scanf("%d",&n);
a=b=1;
printf("1,1"); //輸出前2個月的兔子數
for(i=3;i<=n;i++)//3~n個月
{c=a+b; //當月兔子總數(加上新出生小兔子)
printf(",%d",c);
a=b; //下月大兔子數
b=c; //下月初已有兔子總數
}
return0;
}

『肆』 C語言(兔子生兔子的問題)

問題1 那個說的是兔子對數,一對兔子計為1 (單位用對或雙)
問題2 每兩次printf()後換行,一個printf() 打出了兩個數版,權所以每行是四個數
追問
如果是對數的話也不對啊
每個月兔子的對數應該是這個啊
1,1,2,2,2,4,4,4,8
和他的分析也是不一樣的啊
繁殖問題應該是呈幾何倍數增長的
讓他說成了一個裴波那契數列了
按照他的分析,
1,1,2,3,5,8,13,21
第四個月是三對?
第三個月才生完一個月就生第二胎了?
兔子變蟑螂了?

回答:增加的那個1對不是新生的兔子生的,是原來的那一對兔子生的,所以是3 。你想想看原來的第一對兔子到了第4個月其實生了2對兔子。

『伍』 c語言100道題中,兔子生兔子程序怎麼理解

有一對兔子,從出生後第 3 個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

兔子的規律為數列:

1,1,2,3,5,8,13,21....


下面使用了迭代、遞歸和數組三種解法。

代碼一】使用迭代:

#include<stdio.h>
intmain()
{
longf1=1,f2=1;//兔子的數量
inti;//循環次數
intn;//要計算的月份

printf("輸入要計算的月數:");
scanf("%d",&n);

//計算出循環次數
if(n%2==1){
n=(n+1)/2;
}else{
n=n/2;
}

for(i=1;i<=n;i++){
printf("第%d個月有%d只 ",i*2-1,f1);
printf("第%d個月有%d只 ",i*2,f2);

f1=f1+f2;/*前兩個月加起來賦值給第三個月*/
f2=f1+f2;/*前兩個月加起來賦值給第三個月*/
}
return0;
}

運行結果:

輸入要計算的月數:10
第1個月有1隻
第2個月有1隻
第3個月有2隻
第4個月有3隻
第5個月有5隻
第6個月有8隻
第7個月有13隻
第8個月有21隻
第9個月有34隻
第10個月有55隻

【方法二】使用遞歸:

#include<stdio.h>
intFeibonacci(intn){
if(n==1||n==2)
return1;
else
returnFeibonacci(n-1)+Feibonacci(n-2);
}
intmain(){
intn;//要計算的月份

printf("輸入要計算的月數:");
scanf("%d",&n);

printf("%d個月的兔子總數為%d ",n,Feibonacci(n));

return0;
}


運行結果:

輸入要計算的月數:10
10個月的兔子總數為55


遞歸看上去非常符合邏輯,但是這種遞歸效率是非常慢的,不信你計算20, 30, 40 個月的兔子數試試,明顯比另外兩種方法慢多了,具體分析請看:C語言用遞歸求斐波那契數,讓你發現遞歸的缺陷和效率瓶頸

【代碼三】使用數組

#include<stdio.h>
voidmain()
{
inta[100],i,n;

printf("請輸入月數:");
scanf("%d",&n);

a[0]=a[1]=1;
for(i=2;i<n;i++)
a[i]=a[i-1]+a[i-2];

printf("第%d個月的兔子為:%d ",n,a[n-1]);
}

運行結果:

請輸入月數:10
第10個月的兔子為:55

『陸』 C語言 兔子的繁殖問題(注意,就是按題目樣例要求輸入然後輸出,要一樣)

#include "stdio.h"

void func(int n)
{
int *p = new int[n];
p[0] = 1;
p[1] = 1;
for (int i=2; i<n; i++)
{
p[i] = p[i-2] + p[i-1];
}
for (int j=0; j<n; ++j)
{
printf("%d月,兔子數:%d\n", j+1, p[j]);
}
printf("\n");
}

void main()
{
while (1)
{
printf("請輸入月份,輸入-1離開:\n");
int n;
scanf("%d", &n);
if (n == -1)
{
break;
}
if (n<=0)
{
printf("輸入錯誤,請重新輸入。。。\n");
scanf("%d", &n);
}
func(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語言編程:兔子繁殖問題

如圖,此題難度較大,要用到隊列(我優化為循環隊列)

#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;
}