题意:就是给一个罗马数字,然后要你求出这个数字所代表的值是多少?
简简单单的字符串处理~不过是代码写的有点难看~_~
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char array[100000];
int cishu;
int length;
scanf("%d\n",&cishu);
while(cishu--)
{ //1
int jieguo=0,flag = 0,j;
scanf("%s",array);
length = strlen(array);
if(length==1)
{
if(array[0]=='X') jieguo = 10;
if(array[0]=='L') jieguo = 50;
if(array[0]=='I') jieguo = 1;
if(array[0]=='V') jieguo = 5;
}
else
{
for(j=0;j<length;j++)
{
if(array[j]=='I')
{
flag++;
jieguo += 1;
}
if(array[j]=='X')
{
if(j>0 && array[j-1]=='I')
{
jieguo -= 2*flag;
jieguo += 10;
flag=0;
}
else
jieguo += 10;
}
if(array[j]=='L')
{
jieguo += 30;
}
if(array[j]=='V')
{
if(j==0 || (j>0 && array[j-1]=='I'))
{
jieguo -= 2*flag;
jieguo += 5;
flag = 0;
}
else
{
jieguo += 5;
}
}
}
}
printf("%d\n",jieguo);
}
system("pause");
return 0;
}