當前位置:首頁 » 編程語言 » c語言兔子

c語言兔子

發布時間: 2025-09-10 03:05:49

『壹』 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語言編程 兔子鴿子問題

判斷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 a[50];
int i,t,n;
a[0]=1;
a[1]=1;
for(i=2;i<50;i++)
a[i]=a[i-1]+a[i-2];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",a[n]);
}
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>
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;
}

熱點內容
電子表加密碼 發布:2025-09-10 08:18:38 瀏覽:272
python圖像處理實例 發布:2025-09-10 08:05:54 瀏覽:381
支付寶怎麼的修改密碼 發布:2025-09-10 08:05:53 瀏覽:462
mysql資料庫innodb 發布:2025-09-10 08:05:47 瀏覽:6
ipadmini還原密碼多少 發布:2025-09-10 08:00:37 瀏覽:161
易語言有了源碼 發布:2025-09-10 07:53:57 瀏覽:241
標准C語言基礎教程 發布:2025-09-10 07:36:15 瀏覽:515
a股換演算法 發布:2025-09-10 07:29:18 瀏覽:193
編譯器內存 發布:2025-09-10 07:27:44 瀏覽:375
androiduuid生成 發布:2025-09-10 07:15:33 瀏覽:518