将罗马数字转换为C中的十进制数

时间:2017-01-25 12:07:43

标签: c

这是C中用于将罗马数字转换为十进制数的代码的一部分。但我无法真正理解它究竟是做什么的。有人可以给我一个描述吗?

if ((strlen(roman_Number) - i) > 2) {
    if (digitValue(roman_Number[i]) < digitValue(roman_Number[i + 2])) {
        printf("Invalid roman number");
        return 0;
    }
}
if (digitValue(roman_Number[i]) >= digitValue(roman_Number[i + 1]))
    number = number + digitValue(roman_Number[i]);
else {
    number = number + (digitValue(roman_Number[i + 1]) - digitValue(roman_Number[i]));
    i++;
}
i++;

} // unbalanced bracket

1 个答案:

答案 0 :(得分:0)

如果从偏移i开始至少有3个字母,而第三个字母的值大于第一个,则罗马数字无效。

如果字母的值小于下一个字母的值,则从第二个字母的值中减去第一个字母的值,将其添加到总数中并跳过它们。

否则,将当前字母的值添加到总数中。

这些语句应位于for循环体内,该循环将i0迭代到字符串roman_Number的长度。