Latest web development tutorials

C 練習實例21

C 語言經典100例 C語言經典100例

題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。 以後每天早上都吃了前一天剩下 的一半零一個。 到第10天早上想再吃時,見只剩下一個桃子了。 求第一天共摘了多少。

程序分析:採取逆向思維的方法,從後往前推斷。

1) 設x1為前一天桃子數,設x2為第二天桃子數, 則:

x2=x1/2-1, x1=(x2+1)*2

x3=x2/2-1, x2=(x3+1)*2

以此類推: x前=(x後+1)*2

2) 從第10天可以類推到第1天,是一個循環過程。

程序源代碼:

//  Created by www.w3big.com on 15/11/9.
//  Copyright © 2015年 本教程. All rights reserved.
//

#include <stdio.h>
#include <stdlib.h>
int main(){
    int day, x1 = 0, x2;
    day=9;
    x2=1;
    while(day>0) {
        x1=(x2+1)*2;  // 第一天的桃子数是第2天桃子数加1后的2倍
        x2=x1;
        day--;
    }
    printf("总数为 %d\n",x1);
    
    return 0;
}

以上實例輸出結果為:

总数为 1534

C 語言經典100例 C語言經典100例