【发布时间】:2021-03-29 10:07:26
【问题描述】:
我试图用 C 语言编写一个程序来检查信用卡的 Luhn 算法,但它不起作用。我想我不太清楚getchar() 的工作原理,但这个程序对我来说看起来很明智。你能告诉我它有什么问题吗?提前感谢您对此提供的任何帮助。
#include <stdio.h>
int main(void) {
char x;
int n, sum, i, c;
sum = 0;
printf("Insert the number of digits: ");
scanf("%d",&n);
printf("Insert the digits: ");
for(i = n; i > 1; i = i - 1){
x = getchar();
if(i%2==0)
if(2*x < 10) sum = sum + 2*x;
else sum = sum + 2*x - 9;
else sum = sum + x;
i = i - 1;
}
c = (9*sum)%10;
x = getchar();
getchar();
if(x == c) printf("Last digit: %d,\nCheck digit: %d,\nMatching",x,c);
else printf("Last digit: %d,\nCheck digit: %d,\nNot Matching",x,c);
}
【问题讨论】: