计划无法按预期工作

时间:2014-02-07 00:19:49

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

我有一个问题。我必须制作一个程序,使用校验和检查信用卡号是否有效。我应该从第二个数字到最后一个数字从每个其他数字乘以,然后添加产品,然后添加不与该总和相乘的数字。划分时结果应该产生0。但是,我的程序存在问题。当我输入大数字时,值会更改,最后我会得到浮点异常(核心转储)。当我输入较小的数字时,有时它会起作用,有时则不起作用。请帮帮我。

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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