找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24643|回复: 2

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

[复制链接]
发表于 2013-1-23 16:48:09 | 显示全部楼层 |阅读模式
  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
复制代码
发表于 2013-1-23 19:28:13 | 显示全部楼层
把@echo off删掉
把exit删掉
把代码保存为C:\test.bat
开始
运行
cd /d C:\
test.bat

把结果贴出来看看
发表于 2014-1-14 08:53:07 | 显示全部楼层
没有变量延迟。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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 22:31 , Processed in 0.029978 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表