供参考:
#include <stdio.h>
#include <string.h>
int romanToInt(char * s)
{
int i=0,j=0,a[16]={0},sum=0; //整形数组a用于记录对应罗马数字的整数,
//sum用于记录罗马数字代表的整数和
for(i = 0;s[i] != '\0'; i++)
{
switch(s[i]){
case 'I':{a[j++]=1;break;}
case 'V':{a[j++]=5;break;}
case 'X':{a[j++]=10;break;}
case 'L':{a[j++]=50;break;}
case 'C':{a[j++]=100;break;}
case 'D':{a[j++]=500;break;}
case 'M':{a[j++]=1000;break;}
default:break;
}
}
a[j]=0;
for(i=0;i < j; i++)
if(a[i] >= a[i+1])
sum += a[i];
else
sum -= a[i];
return sum;
}
int main()
{
char s[15];
int a=0;
scanf("%s", s);
a=romanToInt(s);
printf("%d\n",a);
return 0;
}