c_cpp [罗马数字转十进制数]接收罗马数字字符串,返回一个int型十进制数#字符串处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp [罗马数字转十进制数]接收罗马数字字符串,返回一个int型十进制数#字符串处理相关的知识,希望对你有一定的参考价值。

int RomanNumberToDecimal(char* roman) {
    int index[26] = {
    0,0,100,500,0,0,0, //C-100 D-500
    0,1,0,0,50,1000,0, //I-1 L-50 M-1000
    0,0,0,0,0,0,
    0,5,0,10,0,0};     //V-5 X-10
    int n = 0, i = 0;
    while(i < strlen(roman) - 1) {
        int p = index[roman[i] - 'A'];
        int q = index[roman[i+1] - 'A'];
        if(p >= q) {
            n += p;
            i += 1;
        }else {        //两位字母组成一个数的情况
            n += q - p;
            i += 2;
        }
    }
    //while 结束时 i = strlen(roman)-1 或 strlen(roman)
    //i = strlen(roman)-1 时,最后一位字母没有计算
    if(i == strlen(roman) - 1) {
        n += index[roman[i] - 'A'];
    }
    return n;
}

以上是关于c_cpp [罗马数字转十进制数]接收罗马数字字符串,返回一个int型十进制数#字符串处理的主要内容,如果未能解决你的问题,请参考以下文章

C语言 字符串转数字 急急急

c_cpp 罗马数字到十进制数

十六进制字符串转十进制整数

C语言如何把11位16进制字符串转成16进制数?

c语言十六进制字符转化成十进制数字问题

C语言如何把11位16进制字符串转成16进制数?