發生錯誤時,我將for循環中的n值更改爲2.我很確定,雖然我不除以0。我需要做的就是將cardnumber中的其他數字乘以2,並將它加到summ中(但是,如果這個其他數字* 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的錯誤。 –
又一個「學習如何通過猜測編碼直到編譯」的受害者。 –