C语言将罗马数字转换成阿拉伯数字

#include <stdio.h>
#include <string.h>
int main()
{
char a[100];
while(scanf("%s",a)!=EOF)
{
int b[100];
int sum=0;
int i=0,sum1=0;
for(i=0;i<100;i++)
{
switch(a[i])
{ case 'I':b[i]=1,sum1++;continue;
case 'V':b[i]=5,sum1++;continue;
case 'X':b[i]=10,sum1++;continue;
case 'L':b[i]=50,sum1++;continue;
case 'C':b[i]=100,sum1++;continue;
case 'D':b[i]=500,sum1++;continue;
case 'M':b[i]=1000,sum1++;continue;
default: break;
}
}
if(sum1==1)
printf("%d\n",b[0]);
else
{
sum=0;
for(i=0;i<sum1;i++)
{ if(b[i]>=b[i+1])
sum=sum+b[i];
if(b[i]<b[i+1])
{sum=sum+(b[i+1]-b[i]);i++;}
}
printf("%d\n",sum);
}
}
return 0;
}

开始运行没问题,但是 输入LXX后再输入X 值就变成了20.......... 这是为什么...?

主要是因为a里面残留了上次输入的数据,你在while语句的最后加一句话:memset(a, 0, 100);就OK了
温馨提示:内容为网友见解,仅供参考
无其他回答

跪求:用c++或c 遍写 的将罗马数字转阿拉伯数字的程序代码,运行后输入一...
} 大概是这样的吧,你自己再改下,我忘了~~

C++ 罗马数字与阿拉伯数字互相转化
void main(){ static char *a[][10]={"","I","II","III","IV","V","VI","VII","VIII","IX","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"}; \/*建立对照表*\/ int n,t,i,m;p...

罗马数字与阿拉伯数字的相互转换
罗马数字,古罗马人使用的数字系统,由I、V、X、L、C、D、M等基本数字组成,最多重复三次,左减右增。阿拉伯数字,古印度人发明,全世界广泛使用。两者间需要转换,适合交易场景。罗马数字转换原理:从左至右依次递减,结合特殊规则IV、IX、XL、XC、CD、CM,以及辅助数字4和9。代码实现如下。阿拉伯...

怎么把罗马数字转成阿拉伯数字?
I,做独立的词使用时,表示的是第一人称单数代词,用作动词的主语,翻译为:我。5、将罗马数字II转换为阿拉伯数字2;在键盘上找到竖线符号|,通常位于英文输入状态下的反斜杠\\键旁边;按照密码中的排列方式,先打出一个2,再在其左右各打出两个竖线,即可得到IIII||II||II||I的密码。6、IIIIIIIV...

C语言程序编写罗马数字翻译
switch(ALBSZ)\/\/存放阿拉伯数字的变量 { case 1: LMSZ="Ⅰ"; break;case 2: LMSZ="Ⅱ"; break;case 3: LMSZ=" Ⅲ"; break;... ... \/\/以此类推,一一对应就行了 }

罗马数字介绍及罗马数字与阿拉伯数字转换规则
罗马数字是一种起源于古罗马的计数系统,由七个基本符号构成:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。通过组合这些符号,可以表示各种数值。罗马数字的表示方法遵循从大到小的顺序,例如表示数字12,应为XII,即X(10)和I(2)组合。转换罗马数字与阿拉伯数字,...

罗马数字 CXCIX 转化成阿拉伯数字就是 199 问转换过程
C=100 XC=90 IX=9 位数从大到小分别计算,每次只算一位

PASCAL 罗马数字 => 阿拉伯数字
var i:integer;function DecToRoman( iDecimal: integer ): string;const aRomans: array [ 1..13 ] of string = ( 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M' );aArabics: array [ 1..13 ] of integer = ( 1, 4, 5, 9...

DCXII将这个罗马数字转成阿拉伯数字
612 D表示500,C表示100,XII表示12,罗马数字的计数方法是(1)小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12; (2)小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;...

罗马数字介绍及罗马数字与阿拉伯数字转换规则
罗马数字与阿拉伯数字的对话 尽管罗马数字系统看似复杂,但通过简单的规则,我们可以轻松进行转换。首先,将罗马数字分解为各个符号,如IV代表4,XC代表90,MX代表900。大写字母保持原样,小写字母对应其数值,而混合使用时,如XXVII,则代表27。转换时,记住几个关键点:每个罗马数字的符号对应阿拉伯数字,但...

相似回答