Tag: 罗马数字

无法在C中实现递归调用

所以我第一次和C一起工作,我觉得我在使用递归时遇到了麻烦。 例如,要在C#中return methodRecursiveCall(parameter)递归调用的值,我可能会使用return methodRecursiveCall(parameter) 。 在C中,我有这个声明,它是罗马数字转换器的一部分: int convert(char *s) { int val = 0; int index = 0; int length = strlen(s); while (length >1) { if (s[index] == ‘I’) { if(s[index + 1] == ‘V’ || s[index + 1] == ‘X’ || s[index + 1] == ‘C’ || s[index + 1] == ‘D’ || […]

如何使用标准C拒绝无效数字时将罗马数字转换为int?

正确的罗马数字意味着什么可能会 有所不同 。 为了简单起见(没有Unicode,没有乘法原理,没有双减法,没有过量栏,没有大数字等),为了这个问题,有效的罗马数字由正则表达式定义: ^(M{0,3})(D?C{0,3}|CM|CD)(L?X{0,3}|XC|XL)(V?I{0,3}|IX|IV)$ 使用POSIX regexec()代码示例 。 正则表达式匹配使用“严格”规则表示的1..3999范围内的罗马数字。 如果我们不需要拒绝无效数字,有许多解决方案可以转换罗马数字,例如: int roman_numeral_value(unsigned char c) { switch(toupper(c)) { case ‘I’: return 1; case ‘V’: return 5; case ‘X’: return 10; case ‘L’: return 50; case ‘C’: return 100; case ‘D’: return 500; case ‘M’: return 1000; default: return 0; // error } } int roman_numeral_to_int(const char […]

如何将整数值转换为罗马数字字符串?

如何将整数转换为C中罗马数字的String表示?