猴子吃桃问题用循环解决 C语言 超简单

问题:有一只猴子第一天摘下了若干个桃子,当即吃掉了一半,觉得不过瘾又多吃了一个;
第二天又将剩下的桃子吃掉了一半,还不过瘾又多吃了一个;按照这个吃法,每天都吃掉前一天剩下的一半又多一个。
到了第十天,就剩下了一个桃子 问:这只猴子第一天摘下了多少个桃子
思路:正向循环不行,试试逆向 从最后一天向前推

/*猴子吃桃问题(循环)*/
/*问题:有一只猴子第一天摘下了若干个桃子,当即吃掉了一半,觉得不过瘾又多吃了一个;
第二天又将剩下的桃子吃掉了一半,还不过瘾又多吃了一个;按照这个吃法,每天都吃掉前一天剩下的一半又多一个。
到了第十天,就剩下了一个桃子  问:这只猴子第一天摘下了多少个桃子*/
/*作用:正向循环不行,试试逆向;熟悉变量的声明和使用;掌握循环结构的起始条件和结束条件及使用*/
//循环结构的编写要点: 循环内部结构  开始和结束条件
#include <stdio.h>//头文件
int fun(int n)//定义fun函数  int n 定义整型
{
 int t = 1,i;//定义两个整型变量t,i  并对t赋值 t=1   t值为最后一天猴子剩下的一个桃子
 for (i = 1;i < n;i++)//for循环 第一个定义i=0  第二个条件i<n 满足此条件则执行下面语句 循环 i自增
 {
  t = (t + 1) * 2;//最后一天只剩一个桃子 逆向求前一天的桃子  循环最后求出最开始的桃子
 }
 return t;//fun函数返回t值  即这只猴子第一天摘下的桃子
}
/*若输入n值为5 即在第5天后猴子吃得只剩下一个桃子
第一次 t=2*2=4 i=1
第二次 t=5*2=10 i=2
第三次 t=11*2=22 i=3
第四次 t=23*2=46 i=4  此时跳出循环 故第一天猴子摘下的桃子数为46*/
void main()//主函数
{
 int n, t;//定义两个整型变量 n t
 printf("请输入猴子在第几天过后吃得只剩下了一个桃子:");//提示 下行输入天数 最开始到只剩下一个桃子经历的天数
 scanf_s("%d", &n);//输入n值  即:输入猴子在第几天过后吃得只剩下了一个桃子
 t = fun(n);//调用fun函数 赋值t
 printf("猴子在第%d天过后吃得只剩下了一个桃子",n);//提示 此处打印从最开始到只剩下一个桃子所经历的天数
 printf("第一天所摘下的桃子数为%d个\n ", t);//最终结果 打印结果 将第一个天所摘下的桃子数为多少打印出来
}
//代码解释说明:main函数中开始n保存输入的天数,t变量接收函数的返回值也就是第一天猴子所摘下的桃子树,最后打印输出结果
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值