:: 阿拉伯与罗马数字互转程序
:: qzwqzw http://bbs.cn-dos.net
:: 2007-01-03 Revision 2
:: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=26230
@echo off
setlocal EnableDelayedExpansion

for /l %%i in (1,1,100) do (
    set /a numin=!random!*4200/32768-100
    set in=!numin!
    set out=
    call :Arab2Roman
    set in=!out!
    call :Roman2Arab
    echo.%%i [!numin!:!in!:!out!]
    if !numin! neq !out! set /p=--- Invalid ---
)
pause
endlocal
goto :eof

:Arab2Roman
setlocal EnableDelayedExpansion
set num=%in%
set /a tmp=num+0
if not "%num%"=="%tmp%" goto :eof
if %num% geq 4000 goto :eof
if %num% leq 0 goto :eof

set i=0
for %%v in (1000 900 500 400 100 90 50 40 10 9 5 4 1) do (
    set /a i+=1
    set arab!i!=%%v
)

set i=0
for %%v in (M CM D CD C XC L XL X IX V IV I) do (
    set /a i+=1
    set roman!i!=%%v
)

set i=1
:a2r_loop
call set tmp=%%arab%i%%%

if 1%num% lss 1%tmp% (
    set /a i+=1
) else (
    call set rom=%rom%%%roman%i%%%
    set /a num-=tmp
)

if 1%num% gtr 10 goto a2r_loop

endlocal & set out=%rom%
goto :eof
::Arab2Roman

:Roman2Arab
setlocal EnableDelayedExpansion

echo.%in%|findstr /r "[^IVXLCDMivxlcdm]">nul && goto :eof

set i=0
for %%v in (1000 900 500 400 100 90 50 40 10 9 5 4 1) do (
    set /a i+=1
    set arab!i!=%%v
)

set i=0
for %%v in (M 1 D 2 C 3 L 4 X 5 V 6 I) do (
    set /a i+=1
    set roman!i!=%%v
)

set in=%in:m=M%
set in=%in:d=D%
set in=%in:c=C%
set in=%in:l=L%
set in=%in:x=X%
set in=%in:v=V%
set in=%in:i=I%

set in=%in:CM=1%
set in=%in:CD=2%
set in=%in:XC=3%
set in=%in:XL=4%
set in=%in:IX=5%
set in=%in:IV=6%

set i=1
set num=0
:r2a_loop
set tmp=%in:~0,1%
call set rom1=%%roman%i%%%
if "%tmp%"=="%rom1%" (
    call set /a num+=arab%i%
    set in=%in:~1%
) else (
    set /a i+=1
)
if %i% gtr 13 goto :eof
if not "%in%"=="" goto r2a_loop

endlocal & set out=%num%
goto :eof
::Roman2Arab

阿拉伯与罗马数字互转程序相关推荐

  1. 折腾词库,一个词库互转程序

    我在之前写过一个小程序,用于实现QQ拼音.搜狗拼音.谷歌拼音和百度手机拼音输入法词库的互转,文章地址是:http://www.cnblogs.com/studyzy/archive/2009/12/3 ...

  2. c语言中英互译程序,c语言怎么翻译? 程序怎么运行?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 } /*******************************LED动作*************************************/ ...

  3. 单片机2个按键互锁c语言程序,单片机按键点动互锁程序 proteus仿真及源程序

    /******************************************************************** 汇诚科技 ************************* ...

  4. 程序员情人节必备脱单秘籍!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:互扯程序,某互联网公司 P8 级专家攻城狮,曾参与过央视全台网的研发工作.目前正在 ...

  5. 2018,如何从技术小白升级到大牛程序员?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:互扯程序,某互联网公司 P8 级专家攻城狮,曾参与过央视全台网的研发工作.目前正在 ...

  6. 蓝桥杯——罗马数字转换器

    古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了.之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原 ...

  7. 哈工大2022年春季学期计算机系统大作业——程序人生

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 人工智能(未来技术) 学   号 7203610716 班   级 20WJ102 学       生 孙铭蔚 ...

  8. python爬虫之英汉互译(爬虫+pyqt5)

    简单的爬虫与图形化界面的结合 源码转载自[https://blog.csdn.net/qq_38534107/article/details/90440403] 作者:耳森Paulson 在此十分感谢 ...

  9. c语言罗马数字转十进制,罗马数字转十进制的三种方法

    题目要求古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了. 之所以这样,不是因为发明表示法的人的智力的问题,而是因为一 ...

最新文章

  1. KDD 2019高维稀疏数据上的深度学习Workshop论文汇总
  2. android onresume时view,android – 在使用ViewPager滑动时,Fragment不会调用OnResume()
  3. filebeat获取nginx的access日志配置
  4. Oracle 备份还原
  5. gramer法则matlab,东南大学几何与代数matlab实验报告(大一专用).doc
  6. C语言:L1-034 点赞 (20分)(解题报告)
  7. 实用 JavaScript 调试技巧
  8. 提高Java表达能力!不落伍一起掌握Java8中Lambda表达式、函数式接口及方法构造器数组引用
  9. 搭建mysql集群,使用Percona XtraDB Cluster搭建
  10. qt编译实现简单的文本编译器有粘贴复制_qmake 时复制文件(自动在编译前做一些操作,且写在.pro文件里)...
  11. 目录、路径、虚拟路径
  12. 编译生成的Apk安装到手机提示应用未安装,需给apk签名
  13. mybatis中concat的用法
  14. 2019年春第八周作业
  15. java class类
  16. 一种排序NYOJ 8
  17. MTK驱动增加支持扫描显示中文SSID
  18. win10下面安装MTK USB VCOM 驱动
  19. java 中文词性标注_pyhanlp 中文词性标注与分词简介
  20. 大学英语综合教程一 Unit 1 课文内容英译中 中英翻译

热门文章

  1. 屏幕编程 F4的帮组用法
  2. 简单几步教你怎么在路由器上搭建PHP环境的网站
  3. Effective C# 第二章:.Net资源管理(翻译)
  4. NYOJ 195 飞翔
  5. NYOJ 640 Geometric Sum
  6. hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (背包问题)
  7. java程序运存扩容
  8. scrapy-redis使用以及剖析
  9. HTML中字体的垂直排列
  10. 用MOS管防止电源反接的原理