罗马数字表示两千内的数的转化

可表示为
I(1) ---------- MCMXCIX(1999)
罗马数字中有七个字符:
I: 1
V: 5
X: 10
L: 50
C : 100
D : 500
M : 1000
一般表示方法为:大数在前,小数在后。
特殊表示方法有:
IV 4
IX 9
XL 40
XC 90
CD 400
CM 900

(方法)转化思路:
四步走
①输入一串罗马数字
②判断是否合法(代码中莫有判断合法直接整的),
本代码局限于输入正确的罗马数字进行转化,暂时未做输入不合法的编码。
③处理一般情况。在处理过程中需要特殊处理4、9、40、90、400、900
每个数相加,若为特殊的就会多加二倍的那个数,如
罗马数 I V X IV IX
表示
1 5 4 9
每个数加一次则会出现和需要表示的数相差两个 I,
处理方法:遇到I且后面为 V则 不加 I,而减去一个I
这样在下个数加 V 时,正好为需要表示的 IV
④输出转化后的整数

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//罗马数字有 I\V\X\L\C\D\M
int RomaoToint(char* s,int len)//s代表输入的罗马数字
{int num = 0;int flag = 0;//用flag=0来处理一般情况,flag=1来处理特殊位置for (int i = 0; i < len;i++){switch (*(s+i)){case 'M':num += 1000;break;case 'D':num += 500;break;case 'C':if (i + 1 < len&&*(s + i + 1) == 'D' || *(s + i + 1) == 'M'){num -= 100;}else{num += 100;}break;case 'L':num += 50;break;case 'X':if (i + 1 < len&&*(s + i + 1) == 'L' || *(s + i + 1) == 'C'){num -= 10;}else{num += 10;}break;case 'V':num += 5;break;case 'I':if (i + 1 < len&&*(s + i + 1) == 'V' ||*(s + i + 1) == 'X'){num -= 1;}else{num += 1;}break;}}return num;}
//主函数用来调试代码输出结果
int main()
{char arr[100] = { 0 };printf("请输入一个罗马数字代表的数:");scanf("%s", &arr);int len=strlen(arr);int s=RomaoToint(arr,len);printf("%d\n", s);return 0;
}

罗马数字转整数-----c语言实现相关推荐

  1. c语言罗马数字换成整数,leetcode 13 罗马数字转整数 C语言

    leetcode 13 罗马数字转整数 原题 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 ...

  2. LeetCode:第13题 罗马数字转整数 python语言实现 2020.2.3

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

  3. 【每日一算法】罗马数字转整数

    微信改版,加星标不迷路! 每日一算法-罗马数字转整数 作者:阿广 阅读目录 1 题目 2 解析 1 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1 V 5 ...

  4. LeetCode(13.罗马数字转整数) JAVA Hashmap

    LeetCode(13.罗马数字转整数) JAVA Hashmap 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...

  5. leetcode 两数之和 整数反转 回文数 罗马数字转整数

    1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个 ...

  6. LeetCode 13罗马数字转整数14最长公共前缀

    罗马数字转整数 上一题是整数转罗马数字,这题是罗马数字转整数.虽然是简单题,但我感觉其实有点烦. 上一次是数字转字符,这次是字符转数字,总的来说大体思想还是差不多的. 首先整个字符串可能是这样构造的: ...

  7. 罗马数字 java_【leetcode刷题】[简单]13.罗马数字转整数(roman to integer)-java

    罗马数字转整数 roman to integer 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...

  8. LeetCode题 - 13 罗马数字转整数

    罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 I ...

  9. 20190913:(leetcode习题)罗马数字转整数

    罗马数字转整数 题目 大致思路 代码实现 题目 大致思路 跟上题一样,不需要思路,直接把各种情况列出来即可. 代码实现 package com.immunize.leetcode.romanTOINT ...

最新文章

  1. Python Module_Socket_网络编程
  2. java异步调用第三方接口_Java调用第三方系统接口获取数据
  3. JFreeChart插件使用
  4. NLP高阶实战必读:一文走遍完整自然语言处理流程
  5. mysql ---- 官网的测试数据库
  6. mysql+encode+decode+错误_mysql decode encode 乱码问题
  7. DeepMind用ReinforcementLearning玩游戏
  8. LeetCode 1909. 删除一个元素使数组严格递增
  9. html 页面数据显示溢出bug? - 提问篇
  10. 几种简单的社交网站的标志按钮
  11. Galaxy Note 20新爆料:至少有两款机型,处理器高低配
  12. SharePoint 2013 的HTML5特性之响应式布局
  13. python电力系统暂态分析_电力系统暂态计算——时域仿真方法
  14. maven依赖查询网站
  15. ie10不适用计算机,无发安装KB2731771,提示此更新不适用于您的计算机。无法安装ie10,不知道是否跟这个更新无 - Microsoft Community...
  16. HoloLens2通过Wifi部署应用到HoloLens2设备上
  17. 28000 mysql_MysqlERROR1698(28000)解决
  18. 吉度盘点机PDA盘点生成的条码和数量导入库存Excel表
  19. Derivation of matrix‘s eigenvalue and inverse matrix
  20. SysML实践指南第二版(中文翻译:刘亚龙)第17章 OOSEM方法学

热门文章

  1. 【LeetCode 354】俄罗斯套娃信封问题——C++解法
  2. Outlook中撤回已发送的邮件
  3. Form aspx.net 身份认证
  4. 超详细!Python当中的pip常用命令大全!
  5. Python电网静态和准静态分析及自动化优化
  6. OpenCV进阶(3)基于OpenCV的贪吃蛇游戏
  7. 计算机怎么新建word文档,电脑 右击 新建菜单中没有word,怎么添加新建Word文档到右键?...
  8. 苹果系统Mac能安装office吗
  9. 创业思维 - Worktile的故事
  10. 燃烧的大专魂,苦战60天,五轮面试,谁说我拿不下大厂offer?