莆田市网站建设_网站建设公司_展示型网站_seo优化
2026/1/10 15:18:56 网站建设 项目流程

谁说批处理只能做简单操作?本文用if/goto循环、call递归、for循环、交互式输入四种方法,逆向求解经典的猴子吃桃问题,展示批处理脚本的编程逻辑之美。

用多种批处理方法计算C语言中经典的"猴子吃桃问题"


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

1、方法一:用 if 和 goto

@echo off

setlocal enabledelayedexpansion

set day=10

set x1=1

set x2=0

echo 第!day!天,桃子数为:!x1!个

:count

if not !day! lss 2 (

set /a x1=x1+1

set /a x2=x1*2

set /a x1=x2

set /a day-=1

echo 第!day!天,桃子数为:!x2!个

goto count

)

pause

2、方法二:用 if 和 call

@echo off

setlocal enabledelayedexpansion

set day=10

set x1=1

set x2=0

echo 第!day!天,桃子数为:!x1!个

:count

if not !day! lss 2 (

set /a x1=x1+1

set /a x2=x1*2

set /a x1=x2

set /a day-=1

echo 第!day!天,桃子数为:!x2!个

call :count

)

pause

3、方法三:用 for循环

@echo off

setlocal enabledelayedexpansion

set day=10

set x1=1

set x2=0

for /l %%i in (10,-1,1) do (

echo 第%%i天,桃子数为:!x1!个

set /a x1=x1+1

set /a x2=x1*2

set /a x1=x2

)

pause

4、改进成人机对话模式

@echo off

setlocal enabledelayedexpansion

title "用bat解决C语言中经典的"猴子吃桃问题""

color F2

echo.

echo.

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

echo.

echo.

:begin

set /p num=请输入N的值,查看计算结果:

echo.

set x1=1

set x2=0

for /l %%i in (!num!,-1,1) do (

echo 第%%i天,桃子数为:!x1!个

set /a x1=x1+1

set /a x2=x1*2

set /a x1=x2

)

echo.

echo.

goto begin

pause
效果如下:


注:猴子吃桃问题,在C语言中也有多种解决方法,详情请看:

C语言一题多解:猴子吃桃+自由落体+比赛对阵——3个经典问题的N种实现对比(附完整代码)


计算机科学与技术 & 计算机网络技术:双专业课程体系完全导航指南

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询