1、打开visual C++ 6.0-文件-新建-文件-C++ Source File
2、题目:猴子吃桃:猴子第1天摘下若干个桃子,当即吃掉一半多1个桃子,第2天早上又将剩下的桃子吃掉一半多1个,以后每天都吃掉前天一半多1个,到第10天早上只剩下一个桃子,求第1天猴子到底摘子多少个桃子?
3、输入预处理命令和主函数:
#include<stdio.h> /*输入输出头文件*/
void main() /*空类型:主函数*/
4、定义变量、确定天数和每天桃子的数量:
int a,b=1 /*定义变量的数据类型为整型*/
for(a=1a<=9a++) /*确定天数*/
b=(b+1)*2 /*计算从第10天到第1天每天桃子的数量*/
5、输出第1天桃子的数量:
printf("第一天摘了%d个桃子\n",b) /*输出第1天桃子的数量*/
6、完整的源代码:
/* 猴子吃桃
猴子第1天摘下若干个桃子,当即吃掉一半多1个桃子,第2天早上又将剩下的桃子吃掉一半多1个,以后每天都吃掉前天一半多1个,到第10天早上只剩下一个桃子,求第1天猴子到底摘子多少个桃子?*/
#include<stdio.h> /*输入输出头文件*/
void main() /*空类型:主函数*/
{
int a,b=1 /*定义变量的数据类型为整型*/
for(a=1a<=9a++) /*确定天数*/
b=(b+1)*2 /*计算从第10天到第1天每天桃子的数量*/
printf("第一天摘了%d个桃子\n",b) /*输出第1天桃子的数量*/
}
#include <stdio.h>int main(void)
{
int i, peach
peach=1
scanf("%d",&i)
while(i>1)
{
i--
peach=(peach+1)*2
}
printf("%d\n", peach)
}
程序如上,
你可以输入第i天发现桃子数为1.
例如:你输入
10
结果是
1534
你说的
1023
肯定是不对的,因为它都是一半后多吃1个,应该是偶数。
上面的程序,正是你题目的逆向死维,没有用递归。
#include \x0d\x0amain()\x0d\x0a{\x0d\x0a int day,x1,x2 \x0d\x0a day=9//这里假设n=9,你总要给一个n的,不然没有办法计算\x0d\x0a x2=1 //第九天早上还有1个桃\x0d\x0a while(day>0)\x0d\x0a {\x0d\x0ax1=(x2+1)*2//第8天吃了第7天剩下的一半多一个\x0d\x0a //那第八天剩下的再加上1就是第8天原来的一半\x0d\x0a //然后再乘以2既第八天原来的(也就是第7天剩的)\x0d\x0ax2=x1 //让x2是第八天的桃的数量\x0d\x0a //下一轮循环计算第七天原来有多少桃\x0d\x0aday-- \x0d\x0a }\x0d\x0a printf("the total is %d\n",x1) \x0d\x0a}