罗马数字转整数的问题

改了好久,我实在是不知道哪里出问题了,它的输出结果奇奇怪怪的,我输入“I”,输出的居然是73。

img

供参考:

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

因为I的ascii码值就是73……你上面定义的I=1,V=5之类的只是定义了“I”、"V"这些变量而已,不是自动把输入里的字母替换成数字