日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言循环题兔子第三个月生,C语言·古典问题: 兔子总数

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言循环题兔子第三个月生,C语言·古典问题: 兔子总数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

古典問題: 兔子總數

題目:

有一對兔子,從出生第3個月起每個月都生一對兔子,小兔子長到第3月后每個月又生一對兔子。假設所有兔子都不死,編程求第20個月總數為多少? 難點:從第3月起,能生小兔子的大兔子每個月都要生一對兔子。

分析:

月 份

小兔子

中兔子

大兔子

兔子總數

1

1

0

0

1

2

0

1

0

1

3

1

0

1

2

4

1

1

1

3

5

2

1

2

5

6

3

2

3

8

7

5

3

5

13

8

8

5

8

21

9

13

8

13

34

10

21

2

21

55

11

34

2

34

89

此時可找出規律:每個月總數是前兩個月總數之和

方法一

從第三個月開始計算。前面兩個月兔子數量確定(n1;n2),后面每個月的兔子數量等于前兩個月兔子數量之和。前一個月的兔子數n2;前兩個月的兔子數n1;所以從第三個月開始(n),兔子數量為n=n1+n2。此后前兩個月的數目進行更新向后移動一月,方便下一個循環。

void main ()

{

int i,n,n1=1,n2=1;

for(i=3;i<=20;i++)

{

n=n1+n2;//本月兔子的數目(第三月開始)

n1=n2;//n1指向后移一位

n2=n;//n2指向后移一位

printf("第%2d個月兔子總數為%4d個\n",i,n);

}

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

}

方法二

從第一個月開始循環,將第一個月的數量先存儲起來k=f1,在將后面兩個月的兔子數量更新。后面第一個月的兔子數改變為后面第二個月f1=f2,后面第二個月的兔子數為前兩個月之和f2=f2+k(f1未改變時的值)。

#include int main()

{

long f1=1,f2=1,k;

int i;

for(i=1;i<=20;i++ )

{

k=f1;//第i個月的兔子個數

f1=f2;//后面一個月的兔子個數

f2=k+f2;//后面二個月的兔子個數

printf("第%2d月有%4ld只兔子;\n", i,k);

}

}

方法三

每個循環處理兩個月。每次更新,第一個月是前兩個月之和f1+f2,第二個月也是前兩個月之和f2=f2+f1(此時f1已經改變)

int main( )

{

long f1=1,f2=1;

int i;

//每次循環確定2個月的兔子個數

for(i=1;i<=10;i++)

{

printf("第%2d月有%4ld只兔子;\n第%2d月有%4ld只兔子;\n",2*i-1,f1,2*i,f2);

f1=f1+f2;//第2n-1個月兔子數

f2=f2+f1;//第2n個月兔子數

}

}

規律:每個月總數是前兩個月總數之和

總結

以上是生活随笔為你收集整理的c语言循环题兔子第三个月生,C语言·古典问题: 兔子总数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。