forループのnの値を2に変更すると、間違いが発生します。私は0で割り切っていないことは確かです。私がする必要があるのは、カード番号の他の桁に2を掛けて合計に加算することです(ただし、この他の桁* 2が2桁の数字になる場合は、2桁の数字それは例えば、14 1 4)浮動小数点例外Cなぜ、それは何ですか?
long cardnumber = 378282246310005;
int Luhn = 0;
/*Luhn's algorithm*/
for(int n = 2; n <16; n = n + 2)
{
/*check the digits that exceed 10*/
if((((cardnumber % (10^n)) *2) > 10))
Luhn += (cardnumber % (10^n)) + 1;
else
Luhn += (cardnumber % (10^n)) * 2;
}
printf("%d", Luhn);
JavaScriptの '^'演算子はビット単位のXORであり、 '10 ** n'も意味をなさない。これを簡単にするために、カード番号を文字列として保存する必要があります。 – Ryan
実際に '10^10'は' 0'で、これは0で除算するエラーです。 –
"もう一度コンパイルするまで推測してコーディングする方法を学ぶ"の被害者。 –