【问题标题】:Program Wont Work As Expected程序无法按预期工作
【发布时间】:2014-02-07 00:19:49
【问题描述】:

我有一个问题。我必须制作一个程序来检查信用卡号是否有效,使用校验和。我应该从第二个到最后一个数字相乘每隔一个数字,然后将乘积相加,然后将未相乘的数字也加到该总和上。除法时结果应为 0。但是,我的程序有问题。当我输入大数字时,值会改变,最后我得到浮点异常(核心转储)。当我输入较小的数字时,有时会起作用,有时会不起作用。请帮帮我。

感谢您的帮助。请解释一下这个问题,以便我以后避免它。

【问题讨论】:

  • 您的一个数学计算产生的数字太大或太小而无法适应您选择的数据类型。找出原因。
  • 说“浮点异常”,但我没有看到任何浮点内容
  • @pm100 没关系。例如,整数除以零可以做到这一点。

标签: c floating-point-exceptions long-long


【解决方案1】:

我认为在将 i 迭代到较大的 cardNum 时可能会遇到问题,因为 cardNum 很长,可以容纳大量数字,但 int i 只是一个相对较小的 int。

要解决这个问题,尝试将 cardNum 保存为一个字符串,从中提取每个数字并将它们解析为一个 int。然后,您可以将它们相乘和相加,而无需处理大量数字。

【讨论】:

  • 是的,这就是问题所在。谢谢。
【解决方案2】:

cardnum 需要是一个字符串而不是一个数字,你正在循环它期望得到每个数字。您的 for 循环将为您提供从 1 到信用卡号的所有数字(一个长循环)

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2013-12-23
    相关资源
    最近更新 更多