0
我繼續我的任務來存儲輸入信用卡號並驗證它。在整數數組中添加/添加其他所有組件失敗
1)用戶輸入違規信用卡號碼,如1234567898769999(存儲爲字符串)。 2)將字符串轉換爲整數數組int int []。 3)將位置1,3,5 ...最後一個奇數位置乘以2, ,例如2 * 2,2 * 4,2 * 6,2 * 8,2 * 8,2 * 6,2 * 9,2 * 9。 4)將它們存儲在相同的陣列和位置[4,8,12,16,16,12,18,18]。 5)位置0,2,4 ...上一個偶數位置的總和位數。
試圖用異常值出現運行下面的代碼:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main (void) {
string cc_string;
printf("Please enter a credit card number:\n");
//Capture credit card number
cc_string = GetString();
// Array of integers for credit card digits int cc_digits[15];
int sum_evens, sum_odds = 0;
for (int i = 0; i < 16; i++)
{
cc_digits[i] = cc_string[i] - '0';
//Sum digits in even positions (0 ... 14)
if (i % 2 == 0)
{
sum_evens = sum_evens + cc_digits[i];
//Checking values
printf("cc_digits[%d] = %d; Sum_evens = %d\n", i, cc_digits[i], sum_evens);
}
else if (i % 2 == 1)
{
//Multiplies values in each position by 2 and stores in the same position
cc_digits[i] = 2 * cc_digits[i];
sum_odds = sum_odds + cc_digits[i];
//Checking values
printf("cc_digits[%d] = %d; Sum_odds = %d\n", i, cc_digits[i], sum_odds);
}
}
}
會有人有什麼是怎麼回事線索? 我試圖解決這個問題已經三天了。 在此先感謝您的幫助。
爲了複製你的代碼,你能否刪除左邊的'>'字符? – schil227
在嘗試檢查可能不存在的數字之前,應檢查輸入字符串*是否有* 16位數字。而在現實世界的實施中,在輸入另一個卡號之前應該明確清除卡號。我的同事製作了一個帶有PIN碼的安全原型,當我按下「Enter」鍵打開它時,它已經變得粗糙了。 –