#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int romanToInt(char *s)
{
int length=strlen(s),i=0,sum=0;
int b[20]={0};
for(i=0;i<length;i++)
{
switch(s[i])
{
case 'I':
b[i]++;
continue;
case 'V':
b[i]+=5;
continue;
case 'X':
b[i]+=10;
continue;
case 'L':
b[i]+=50;
continue;
case 'C':
b[i]+=100;
continue;
case 'D':
b[i]+=500;
continue;
case 'M':
b[i]+=1000;
continue;
default:
break;
}
}
i=0;
if(length==1)
return b[0];
else
{
while(i<length)
{
if(b[i]>=b[i+1])
{
sum+=b[i];
i++;
}
else
{
sum+=(b[i+1]-b[i]);
i+=2;
}
}
return sum;
}
}
int main()
{
char a[20];
while(scanf("%s",a)!=EOF)
{
printf("%d\n",romanToInt(a));
memset(a,0,20);
}
return 0;
}原文:http://blog.csdn.net/zyh920521/article/details/44698695