C语言循环控制

描述

猴子每天吃当天桃子的一半多一个,到了第十天的时候只剩下一个桃子,要求第一天的桃子数量是多少。(谭浩强 C 语言 第三版 129 页第 6.10 题)

题目

猴子吃桃问题。猴子第一天摘下若干条子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,只剩一个桃子了。求第一天共摘了多少个桃子。

题目解决思路

这个题目我们可以逆着来倒推第一天的数据。第 10 天的桃子还剩一个,那么前一天的桃子数量是当天桃子数量 加 1 个的两倍。由于是第 10 天,所以我们要执行 9 次。

代码具体实现

#include <stdio.h> void main() { printf("嗨客网(www.haicoder.net)\n\n"); int day = 9, sum , last = 1; while (day > 0) { sum = (last + 1 ) * 2 ; last = sum; day --; } printf("猴子总共摘了 %d \n",sum); }

运行后,控制台输出如下:

13_6.10答案.png

我们定义了一个桃子总数 sum 字段,将最后一天的桃子数加 1 ,然后乘以 2 就是前一天桃子的数量,相加就会得到最终的数量。