我參加了edx.org的CS50課程;它被稱爲計算機科學入門。如何從長長的數字中分離殘留物?
我想解決第一週的問題集。所以用戶輸入信用卡號碼,我必須開發某種算法來檢查它的號碼是否有效。爲此,我需要將整個16位數字分隔爲數字。我被困在這裏。我想我需要循環做這件事,每一步都要一步一步地做到這一點,爲此我想將用戶的輸入分成10步,並以某種方式得到殘留物。
由於int
對其可容納的位數限制,我無法轉換爲int
型。我怎樣才能實現這種功能?我嘗試了這一點,但後來意識到它導致了什麼......至少乍一看。 cre_num
住信用號碼。
long long check(long long cre_num)
{
double part, i;
for (i = 0.1; i <= 1; i = i+0.1)
{
if (cre_num/10 == i)
{
part = i;
}
}
return part;
}
Got it!非常感謝你,沒有想到這種實現。 –
'long long'值'cre_num/10'永遠不會等於0.1到0.9範圍內的double值。它*可能*等同於'1.0',但是循環中的'i'可能永遠不會是'1.0',因爲浮點數是「破碎的」,當添加不必要的不準確編碼時,將0.1添加到自己9次並期待它等於'1.0'。如果卡號是逐位輸入的:如果您想檢查每個數字,則保留它。 –
你應該包括cs50標籤 –