我需要将罗马数字转换为整数值,顺序无关紧要。 (9=八)
现在我开始从我的代码中得到一个软糖因子,当我实现 X 时它从 20 开始,当我实现 M 时它达到 530。我不能简单地把它分解出来,因为我= 531 和 V=535,MDCLXVI = 1560。那个和 eclipse 有时说它不能运行,有时它可以。
这是代码
C int romanToInt(char *s) {
int n, k=0;
while(k<[MAX_LINE]) {
if(s[k]==’I’) {
n=n++
}
if(s[k]==’v’) {
n=n+5
}
if(s[k]==’X’) {
n=n+10
}
if(s[k]==’L’) {
n=n+50
}
if(s[k]==’C’) {
n=n+100
}
if(s[k]==’D’) {
n=n+500
}
if(s[k]==’M’) {
n=n+1000
}
return n;
}
感谢您的帮助。
最佳答案
您初始化了循环计数器 k,但没有初始化累加器 n。初始化n=0; C 假定您知道自己在做什么,因此它不会像某些 OOP 语言那样自动将整数初始化为零。所以,你可能从垃圾开始,这会打乱你所有的计算。 第二:为什么n=n++?用户 n+=1 或 n++
此外,for 循环可能比 while 循环更好,因为它会强制您初始化计数器变量(如果您还没有初始化的话)并设置迭代次数的限制,因此几乎没有无限的机会循环。
最后,考虑 if/else if 或 select/case,而不是所有这些 if。
哦,我确定这可能是一个拼写错误,但您的 return 语句应该在循环结束之后。您要么忘记在 return 语句之前添加额外的大括号,要么我算错了。
关于c - 罗马数字翻译器中的随机加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27235142/