我希望有人能幫助我。我是一個完全徹底的C新手。程序凍結 - Luhn的算法
這是針對C語言(只是普通的老C,而不是C#或C++)的一個學校任務,教授堅持認爲我們允許使用的唯一編譯器是Borland 5.5。
一般分配是運行一個算法,可以檢查信用卡號碼的有效性。我已經成功地獲得了程序來獲取用戶輸入的CC號碼,然後將該號碼輸出到數組中。它主要打印出我想要的東西。
但是,當我輸入最後一個函數(我這樣評論的那個函數)然後編譯時,程序剛剛開始掛起。我不知道可能是什麼原因造成的。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
//global variables declared.
//in an earlier version, I was going to use multiple functions, but I couldn't make them work
float array[16];
double num, ten;
int i, a, b, x, y, check;
int main()
{
ten = 10;
//pick up user-input number
printf("Enter your credit card number\n>");
scanf("%lf", &num);
//generate the array
for (i = 15; i >= 0; i--)
{
array[i] = fmod(num, ten);
num /= 10;
printf("Array is %1.1lf\n", array[i]);
}
//double every other number. If the number is greater than ten, test for that, then parse and re-add.
//this is where the program starts to hang (I think).
{for (i = 2; i <= 16; i + 2)
{
array[i] = array[i] * 2;
if (array[i] >= 10)
{
a = (int)array[i] % 10;
b = (int)array[i]/10;
array[i] = a + b;
}
}
printf("%f", array[i]);
}
//add the numbers together
x = array[2] + array[4] + array[6] + array[8] + array[10] + array[12] + array[14] + array[16];
y = array[1] + array[3] + array[5] + array[7] + array[9] + array[11] + array[13] + array[15];
check = x + y;
//print out a test number to make sure the program is doing everything correctly.
//Right now, this isn't happening
printf("%d", check);
return 0;
}
哇。因爲錯過了這些,我感到非常愚蠢。謝謝! – TeraBat
沒問題。但是請注意valter的觀察 - 在第一個循環中,你從15變爲0,這可能是正確的。但是在這個你從2到16包含,這是錯誤的。您要麼從0到14,要麼從1到15. 16不在數組邊界之內。 – happydave