0

ここで問題があります。チェックサムを使用して、クレジット カード番号が有効かどうかをチェックするプログラムを作成する必要があります。2 番目から最後の桁まで 1 桁おきに乗算し、積を加算してから、その合計に乗算されなかった数値を加算することになっています。除算すると、結果は 0 になるはずです。ただし、ここで私のプログラムに問題があります。大きな数値を入力すると、値が変化し、最後に浮動小数点例外 (コア ダンプ) が発生します。小さい数値を入力すると、機能する場合と機能しない場合があります。私を助けてください。

ご協力ありがとうございました。後で回避できるように、問題を説明してください。

4

2 に答える 2

3

cardNum は long long であり、巨大な数を保持できますが、int i は単に int 比較的小さいため、大きな cardNum まで i を反復するときに問題が発生する可能性があると思います。

この問題を解決するには、各桁を抽出して int に解析する文字列として cardNum を保持してみてください。その後、膨大な数を表すことなく、それらを乗算およ​​び加算できます。

于 2014-02-07T00:25:05.123 に答える
0

cardnum は数値ではなく文字列である必要があります。各桁を取得することを期待してループしています。あなたの for ループは、1 からクレジット カード番号までのすべての数字を返します (長いループ)。

于 2014-02-07T00:28:28.713 に答える