[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[代码合集] 计算阶乘的BAT代码为何不能产生输出结果?

  1. @echo off
  2. :start
  3. cls
  4. set /a w=1
  5. set /p n=请你输入要求的数:
  6. if %n% GEQ 17 (echo 你所输入的数据已经产生越界了请重新输入 (0-16)
  7. pause
  8. goto start)
  9. else
  10. for /l %%a in (1 1 %n%) do set /a w*=%%a
  11. echo %n% 的阶乘是%w%
  12. echo -----------------------------------
  13. echo ------------1继续操作--------------
  14. echo ------------2退出操作--------------
  15. echo -----------------------------------
  16. :mid
  17. set /p b=请输入你的选择:
  18. ::if %b%==1 (goto start) else goto end
  19. if %b%==1 (goto start) else if %b%==2 (goto end) else (echo 你的输入有误请重新输入:
  20. ( goto mid))
  21. :end
  22. exit
复制代码

把@echo off删掉
把exit删掉
把代码保存为C:\test.bat
开始
运行
cd /d C:\
test.bat

把结果贴出来看看

TOP

没有变量延迟。else子句必须放在if子句右括号的同一行上。没有考虑0的阶乘是1.
  1. @echo off&setlocal enabledelayedexpansion
  2. :start
  3. cls
  4. set /a w=1
  5. set /p n=请你输入要求的数(0-16):
  6. if !n! GEQ 17 (echo 越界了请重新输入 【0-16】&pause&goto start )
  7. if !n!==0 (set w=1&goto xs)
  8. for /l %%a in (1 1 !n!) do (
  9. set /a w*=%%a
  10. )
  11. :xs
  12. echo !n! 的阶乘是!w!
  13. :mid
  14. echo -----------------------------------
  15. echo ------------1继续操作--------------
  16. echo ------------2退出操作--------------
  17. echo -----------------------------------
  18. set /p b=请输入你的选择:
  19. if !b! ==1 (goto start)
  20. if !b!==2 (exit)
  21. echo 你的输入有误请重新输入&pause&goto mid
复制代码
bat其实很简单

TOP

返回列表