c - 罗马数字翻译器中的随机加法

标签 c eclipse roman-numerals

我需要将罗马数字转换为整数值,顺序无关紧要。 (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/

相关文章:

c - 如何在 C 中解析标准输入?

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

c++ - 需要格式化字符串中的字符优先级

Python 正则表达式。匹配和替换罗马数字

c - c中按字母顺序排列的第一个和最后一个单词

c - ANSI C - 使用动态数组创建的嵌套 BER TLV 元素的释放

c - 在 MCU 上使用 nmealib 安全吗?

Eclipse NEON "no staged files"错误

android - Eclipse ADT 插件 : An error occurred while collecting items to be installed

eclipse - 如何使用 Eclipse UML Generators 插件