C语言程序设计(第三版)何钦铭著 习题4-10
题目
猴子吃桃问题。
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半加一个。
到第 n天早上想再吃时,只剩下一个桃子了。
问∶第一天共摘了多少个桃子?试编写相应程序。(提示∶采取逆向思维的方法,从后往前推断)
分析过程
输入
条件:输入一个正整数n(n为奇数)
输出
条件:输出第一天共摘了多少个桃子
分析
第n天,有1个桃子
第n-1天,有2*(1+1)=4个桃子
第n-2天,有2*(4+1)=10个桃子
…
第1天,有2*(前一天桃子总数+1)个桃子
代码
#include <stdio.h>
#include <math.h>
int main () {
/*定义变量*/
int n; /*定义变量,存储输入的正整数n*/
int num=1; /*定义变量,计算桃子总数*/
/*赋值*/
printf("请输入正整数n:\n"); /*输入提示*/
scanf("%d \n", &n); /*输入并赋给变量*/
/*计算*/
for (int i = 1; i < n; i++) { /*计算第n-i天的桃子总数,分别相加*/
num = 2*(num+1);
}
printf("第一天摘了%d个桃子\n", num); /*输出,第一天摘得桃子总数*/
return 0;
}