#include <stdio.h>
#include <string.h>
int main()
{
int n,i,s,k,sum;
char a[3000];
while(scanf("%s",a)!=EOF)
{
n=strlen(a);
sum=0;
k=1000;
for(i=0;i<n;i++)
{
switch(a[i])
{
case 'M':s=1000;break;
case 'D':s=500;break;
case 'C':s=100;break;
case 'L':s=50;break;
case 'X':s=10;break;
case 'V':s=5;break;
case 'I':s=1;break;
}
if(k<s)
sum=sum+s-2*k;
else
sum=sum+s;
k=s;
}
printf("%d\n",sum);
}
return 0;
}
1.罗马数字,这个题的重点是判断第i项和第i+项的大小,如果i+1比i小的话,应该直接相加,而i+1比i大的话,应该减去i的两倍,同时加上i+1,就相当于后面的数比左边的大,则用右边的数减去左边的数,但因为之前已经加过一次,所以要减两次。
2.利用switch case 解决