c语言中罗马字母数字,罗马数字转整数C语言实现
本题目来自于力扣
题目
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer
思路
初始pre为0,然后遍历字符串,将每个字符对应的值和pre比较,小则做减法,否则正常加,将pre刷新。
解决代码
#include
#include
int romanToInt(char * s);
int main(){
char *roman = "MDCCCLXXXIV";
int number = romanToInt(roman);
printf("%d\n",number);
return 0;
}
int romanToInt(char * s)
{
int length = strlen(s);
int number = 0;
int pre = 0;
for(int i = length-1;i >= 0;i--)
{
//如果pre的数比当前数字大,那么就减,否则则加
if( *(s+i) == 'I' )
{
if( i+1 1 )
{
number += -1;
}else
{
number += 1;
}
pre = 1;
}
else if ( *(s+i) == 'X' )
{
if( i+1 10 )
{
number += -10;
}else
{
number += 10;
}
pre = 10;
}
else if ( *(s+i) == 'C' )
{
if( i+1 100 )
{
number += -100;
}else
{
number += 100;
}
pre = 100;
}
else if ( *(s+i) == 'V' )
{
number += 5;
pre = 5;
}
else if ( *(s+i) == 'L' )
{
number += 50;
pre = 50;
}
else if ( *(s+i) == 'D' )
{
number += 500;
pre = 500;
}
else if ( *(s+i) == 'M' )
{
number += 1000;
pre = 1000;
}
}
return number;
}
c语言中罗马字母数字,罗马数字转整数C语言实现相关推荐
- c语言字母转换数字代码,实现c语言中字符串和数字的相互转换的代码
实现c语言中字符串和数字的相互转换的代码 引导语:代码就是程序员用开发工具所支持的语言写出来的源文件,是一组由字符.符号或信号码元以离散形式表示信息的明确的'规则体系.以下是百分网小编分享给大家的实现 ...
- c语言0x前缀的作用,C语言中的十六进制数字为什么以前缀0x开头
C语言中最直观的数字表示方式自然是二进制.不过这样常常会让数字看起来"过长",在C语言程序开发中,为了程序员阅读代码的方便,需要逐位操作变量时,常常使用十六进制,相对而言更加直观. ...
- c语言中后缀字母如 d h b l i,10 C语言中常量的表示.ppt
10 C语言中常量的表示 第9单元 C语言中常量的表示 数据可以用变量存放,也可以用常量形式表示.常量是程序不可修改的固定值,可以分字面常量和符号常量. 字面常数就是直接书写出来的常数,通常不被单独存 ...
- python电话号码对应的字符组合_Python3 在字符串中提取字母+数字组合微信账号、电话等 - pytorch中文网...
今天处理数据要提取字符串中的微信,字符串中包含中文英文Emoji,标点符号等. python 提取字符串中的电话 提取电话相对简单,多个电话也可以提取 import re desstr = " ...
- c语言中函数名可不可以由用户命名,C语言中变量名及函数名的命名规则与驼峰命名法...
在程序设计中,变量名.函数名.数组名等统称为标识 符.简单地说,标识符就是一个名字.除库函数的函数名由系统定义外,其余都由用户自定义.C语言规定,标识符只能由字母(a-z,A-Z).数字 (0-9). ...
- c语言中不能编译,为什么`int;`可以在C语言中很好地编译,而在C ++中却不能?
考虑以下程序(请参见此处的现场演示). #include int main(void) { int ; // Missing variable name puts("Surprise&qu ...
- c语言中的字母占位符,C语言专题-基本数据类和占位符
C语言中常用的几种基本数据类型有 基本数据类型的长度 short =2 unsigned short=2 char =1 unsigned char=1 int =4 unsigned int=4 l ...
- c语言中%加字母是啥意思,%C是什么意思? C语言中%c,%s分别代表什么意思?
导航:网站首页 > %C是什么意思? C语言中%c,%s分别代表什么意思? %C是什么意思? C语言中%c,%s分别代表什么意思? 相关问题: 匿名网友: %c单个字符输出的意思. %s是输出字 ...
- c语言中一个字母-97 1,C语言学习(1)
一.C语言基础 1. 学习方法 多看+多敲+多思考总结 2. C语言历史 机器码: 01二进制去写代码,困难很大 10+11运算 + ---> 01001 汇编语言:用助记符替换掉机器码中的序列 ...
- c语言 统计数量用count_c语言中统计重复数字次数 c语言问题 统计不同数字的个数...
请问c语言当中,如何统计数字各自出现的次数 请教一个问题: 在c语言当中,用数组的方法,统计输入的一串数字,统计实现代码: #include int main() { int num = 0, i = ...
最新文章
- 她92年的,27岁,当上浙大博导。
- 教你如何运用python实现学生信息管理系统
- C++STL中的unique函数解析
- 安装报错_RG Magic Bullet安装报错修复方法
- C#进阶系列——WebApi 身份认证解决方案:Basic基础认证
- 字符串操作与正则表达式
- LeetCode 147. Insertion Sort List 链表插入排序 C++/Java
- android studio 使用SVN 锁定文件,防止别人修改(基于Android studio 1.4 )
- 【spring源码分析】IOC容器初始化(二)
- binaryoperator java_BinaryOperatorT接口的用法示例
- WireShark 查看UDP码流的丢包率
- python django项目实例_【Django】项目实例
- who 、w 查看当前登录用户
- 二叉树的创建及其相关操作
- 分区助手服务器,分区助手专业版
- 英语语法3-现在进行时
- 宝宝去了幼儿园不爱说话怎么办?
- 小鹤双拼提速方法个人经验-by老随风
- Office 顿号怎么输
- 全国计算机等级考试桑葚,高负荷学习眼睛干涩疲劳?省考试院推荐6大营养果蔬护眼有方!附食谱...
热门文章
- 取消u盘写保护 u盘量产教程(无数尝试后的终极解决办法)
- msvcr71.dll丢失的解决方法,如何快速进行丢失修复?
- 将pdf文件缩小的最快速方法,pdf文件变小的方法
- 计算机一级添加通讯录好友,电脑企业微信从微信好友中添加成员功能如何使用...
- python朋友圈点赞统计_微信公众号所有历史文章的标题/点赞数/阅读数统计
- JavaScript函数创建表格
- [网易博客]驱动力读后感
- 大学生就业观念的调查与分析
- SEO与SEM的区别和联系
- 厉害了!小学生用大数据研究苏轼,结论出人意料