这是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
答案 0 :(得分:0)
如果从偏移i
开始至少有3个字母,而第三个字母的值大于第一个,则罗马数字无效。
如果字母的值小于下一个字母的值,则从第二个字母的值中减去第一个字母的值,将其添加到总数中并跳过它们。
否则,将当前字母的值添加到总数中。
这些语句应位于for
循环体内,该循环将i
从0
迭代到字符串roman_Number
的长度。