Board logo

标题: [代码合集] 计算阶乘的BAT代码为何不能产生输出结果? [打印本页]

作者: m82170560    时间: 2013-1-23 16:48     标题: 计算阶乘的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
复制代码

作者: BAT-VBS    时间: 2013-1-23 19:28

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

把结果贴出来看看
作者: 怪怪的僵尸    时间: 2014-1-14 08:53

没有变量延迟。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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2