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

[数值计算] bat实现罗马数字的转换

使用bat将阿拉伯数字转换成罗马数字

我自己尝试过很多版本,但都不太尽如人意,所以还是使用了穷举法

代码如下:
  1. @echo off
  2. REM 阿拉伯数字转换为罗马数字
  3. setlocal EnableDelayedExpansion
  4. REM 定义罗马数字组
  5. set "ones_romans[0]="
  6. set "ones_romans[1]=I"
  7. set "ones_romans[2]=II"
  8. set "ones_romans[3]=III"
  9. set "ones_romans[4]=IV"
  10. set "ones_romans[5]=V"
  11. set "ones_romans[6]=VI"
  12. set "ones_romans[7]=VII"
  13. set "ones_romans[8]=VIII"
  14. set "ones_romans[9]=IX"
  15. set "tens_romans[0]="
  16. set "tens_romans[1]=X"
  17. set "tens_romans[2]=XX"
  18. set "tens_romans[3]=XXX"
  19. set "tens_romans[4]=XL"
  20. set "tens_romans[5]=L"
  21. set "tens_romans[6]=LX"
  22. set "tens_romans[7]=LXX"
  23. set "tens_romans[8]=LXXX"
  24. set "tens_romans[9]=XC"
  25. set "hundreds_romans[0]="
  26. set "hundreds_romans[1]=C"
  27. set "hundreds_romans[2]=CC"
  28. set "hundreds_romans[3]=CCC"
  29. set "hundreds_romans[4]=CD"
  30. set "hundreds_romans[5]=D"
  31. set "hundreds_romans[6]=DC"
  32. set "hundreds_romans[7]=DCC"
  33. set "hundreds_romans[8]=DCCC"
  34. set "hundreds_romans[9]=CM"
  35. set "thousands_romans[0]="
  36. set "thousands_romans[1]=M"
  37. set "thousands_romans[2]=MM"
  38. set "thousands_romans[3]=MMM"
  39. :ConvertToRoman
  40. REM 接收输入端
  41. cls
  42. echo.
  43. set "number="
  44. set /p number=请输入一个整数:
  45. set "result="
  46. REM 检测是否大于3999
  47. set "stand=3999"
  48. if "%number%" equ "%stand%" goto :processing
  49. if "%number%" gtr "%stand%" (
  50.     cls
  51.     echo.
  52.     echo 被转换数字不可大于3999
  53.     pause >nul
  54.     goto :ConvertToRoman
  55. )
  56. if "%number%" lss "%stand%" goto :processing
  57. :processing
  58. REM 千位
  59. set /a t=number/1000
  60. set /a number=number%%1000
  61. set "result=!result!!thousands_romans[%t%]!"
  62. REM 百位
  63. set /a t=number/100
  64. set /a number=number%%100
  65. set "result=!result!!hundreds_romans[%t%]!"
  66. REM 十位
  67. set /a t=number/10
  68. set /a number=number%%10
  69. set "result=!result!!tens_romans[%t%]!"
  70. REM 个位
  71. set "result=!result!!ones_romans[%number%]!"
  72. echo.
  73. echo 得到罗马数字为:%result%
  74. pause >nul
  75. goto :ConvertToRoman
复制代码
QQ 1980286392

回复 2# hlzj88


    这是...来打击我的?
QQ 1980286392

TOP

返回列表