问题描述:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?
思路分析:
首先我们要明确的是第十天没有吃桃,看红线部分,这是不是说明第九天剩了一个桃子呢?
day | 桃子剩余数 |
9 | 1 |
8 | (1+1)*2=4 |
7 | (4+1)*2=10 |
6 | (10+1)*2=22 |
5 | 22+1)*2=46 |
4 | 46+1)*2=94 |
3 | 94+1)*2=190 |
2 | (190+1)*2=382 |
1 | (382+1)*2=766 |
代码块:
#define _CRT_SECURE_NO_WARNINGS 1
//防止visual studio2013以上版本scanf报错,vc6.0环境可忽略
#include<stdio.h>
int main()
{
int i, number;
number = 1;
for (i = 1; i <= 9; i++) {
number= (number + 1) * 2;
}
printf("猴子第一天采摘数为:%d个桃子 \n", number);
return 0;
}
作者骚话:
其实这题不止用for循环,while等递归方法都可以,方法并不唯一,其实这题很基础,涉及的知识点并不难,关键是审题。虽然编程语言是不断进步的,但是编程思维是不变的,我们只要在平时训练中注重思维的严谨,这将标志着我们一只脚踏入了成功的大门