c 语言程序设计中有关猴子吃桃子的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 08:04:32

<谭> 6.10

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

#include <stdio.h>
int main()
{
int prev ; /* 前一天 */
int next = 1 ; /* 后一天, 初值为第10天 */
int i;
for (i = 9; i >= 1; i--)
{
prev = (next + 1) * 2 ; /* next=prev-(prev/2+1) */
next = prev;
}
printf("total=%d\n", prev);
return 0;
}

运行结果:
====================
total=1534
====================

★ 此题用倒推的办法,所以注意循环结束的条件。多数情况下用循环为递增方式,本题中用递减方式,因此是: i >= 1 。

分步验证如下:
#include <stdio.h>
int main()
{
int prev ;
int next = 1 ;
int i;
for (i = 9; i >= 1; i--)
{
prev = (next + 1) * 2 ;
printf("i=%d total=%-5d \n", i, prev);
next = prev;
}<