返回列表 发帖
:: 人民币金额小写转大写
::dos联盟里早以有经典代码了。
::实在想不出比他更精简的代码,本想精简一下他的代码,结果发现越减越多。
::也发出来吧,算是给论坛添一块砖。
::以下代码前半部分出自dos联盟的 qzwqzw
::http://www.cn-dos.net/forum/view ... =%E5%A4%A7%E5%86%99
:
  1. @echo off
  2. set tbl1=零壹贰叁肆伍陆柒捌玖
  3. set tbl2=分角元拾佰仟万拾佰仟亿拾佰仟
  4. :test
  5. setlocal EnableDelayedExpansion&cls
  6. set /p num=请输入金额(小于一万亿元)
  7. echo\&echo  小写  %num%&echo\
  8. for /f "tokens=1,2 delims=." %%f in ("%num%") do (
  9.     set num2=%%g00
  10.     set num=%%f!num2:~0,2!
  11. )
  12. :loop
  13. call set rmb=%%tbl1:~%num:~-1,1%,1%%%%tbl2:~%bit%,1%% %rmb%
  14. set /a bit+=1
  15. set num=%num:~0,-1%
  16. if not "%num%"=="" goto loop
  17. rem 以上代码原创作者 qzwqzw 出自 cn-dos 联盟
  18. rem 地址:http://www.cn-dos.net/forum/viewthread.php?tid=26230&fpage=1&highlight=%E5%A4%A7%E5%86%99
  19. for /f "tokens=1-3 delims=亿万" %%a in ("%rmb%") do (
  20.   if not "%%c"=="" (
  21.     call :lis "%%a" 亿
  22.         call :lis "%%b" 万
  23.         call :lis "%%c"
  24.   ) else (
  25.      if not "%%b"=="" (
  26.        call :lis "%%a" 万
  27.            call :lis "%%b"
  28.          ) else call :lis "%%a"
  29. ))
  30. if "!rm:~-1!"=="元" (set rm=!rm!整) else set rm=!rm:元=元零!
  31. set rm=!rm:零零=零!
  32. echo  大写  !rm!
  33. echo\&pause
  34. endlocal
  35. goto :test
  36. :lis
  37. set str=
  38. for %%i in (%~1) do (
  39.   set var=%%i
  40.   set var=!var:零元=元!
  41.   if "!var:~0,1!"=="零" (set str=!str!零) else set str=!str!%%i
  42.   set str=!str:零零=零!&set str=!str:零元=元!
  43. )
  44. if "!str:~-1!"=="零" set str=!str:~0,-1!
  45. if not "!str!"=="" set rm=!rm!!str!%~2
  46. goto :eof
复制代码

[ 本帖最后由 随风 于 2008-3-11 15:07 编辑 ]
技术问题请到论坛发帖求助!

TOP

回 5 楼 输入一亿 显示:壹亿万零整
技术问题请到论坛发帖求助!

TOP

返回列表