寒假练习 1002 Roman numerals

来源:互联网 发布:中石油logo相关数据 编辑:程序博客网 时间:2024/06/05 13:25

    题意:就是给一个罗马数字,然后要你求出这个数字所代表的值是多少?

    简简单单的字符串处理~不过是代码写的有点难看~_~

#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;}