C語言猴子吃桃問題

2020-07-16 10:04:32
猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第二天早上又將第一天剩下的桃子吃掉一半,有多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第 10 天早上想再吃時,發現只剩下一個桃子了。編寫程式求猴子第一天摘了多少個桃子。

實現過程:

(1) 定義 day、x1、x2 為基本整型,並為 day 和 x2 賦初值 9 和 1。

(2) 使用 while 語句由後向前推出第一天摘的桃子數。

(3) 輸出結果。

(4) 程式程式碼如下:
#include <stdio.h>
int main()
{
    intday,x1,x2;    /*定義 day、x1、x2 3 個變董為基本整型*/
    day=9;
    x2=1;
    while(day>0)
    {
        x1=(x2+1)*2;    /*第一天的桃子數是第二天桃子數加1後的2倍*/
        x2=x1;
        day--;    /*因為從後向前推所以天數遞減*/

    }
    printf("the total is %dn",x1);    /* 輸出桃子的總數*/
    return 0;
}

執行結果:

the total is 1534

技術要點:

本範例的思路基本上是先找出變數間的關係,也就是要明確第一天桃數和第二天桃子數之間的關係,即第二天桃子數加 1 的 2 倍等於第一天的桃子數。