C语言练习题-C语言练习题实例21
题目:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,发现只剩下一个桃子了。求第一天共摘了多少个桃子。
程序分析:采取逆向思维的方法,从后往前推断。
- 设x1为前一天桃子数,设x2为第二天桃子数,则:
x2 = x1/2 - 1 x1 = (x2 + 1) * 2
- 从第10天可以类推到第1天,形成一个循环过程。
实例:
#include <stdio.h>
int main() {
int day, x1 = 0, x2;
day = 9;
x2 = 1;
while (day > 0) {
x1 = (x2 + 1) * 2; // 第一天的桃子数是第二天桃子数加1后的2倍
x2 = x1;
day--;
}
printf("第一天共摘了 %d 个桃子\n", x1);
return 0;
}
以上程序的输出结果为:
第一天共摘了 1534 个桃子