思路:默认输入的为正确的字符串,若不为特殊情况直接按照字母对应的值累加即可,若为特殊情况,则单独处理(特殊情况只存在I,X,C开头对应的六种情况)
代码:
#include<stdio.h>
#include<string.h>
int trans(char*s,int len)
{
int sum=0;
for(int i=0;i<len;i++){
switch(s[i]){
case 'M':
sum+=1000;
break;
case 'D':
sum+=500;
break;
case 'L':
sum+=50;
break;
case 'V':
sum+=5;
break;
case 'I':
{
if(s[i+1]!='V'&&s[i+1]!='X'){
sum+=1;
}
else{
sum-=1;
}
break;
}
case 'X':
{
if(s[i+1]!='L'&&s[i+1]!='C'){
sum+=10;
}
else{
sum-=10;
}
break;
}
case 'C':
{
if(s[i+1]!='D'&&s[i+1]!='M'){
sum+=100;
}
else{
sum-=100;
}
}
break;
}
}
return sum;
}
int main()
{
char a[100]={0};
printf("请输入:");
scanf("%s",&a);
printf("%d\n",trans(a,strlen(a)));
return 0;
}