【发布时间】:2020-06-23 14:20:55
【问题描述】:
我试图用 Luhn 算法用这个信用卡号得到总和:4003600000000014
我得到这个输出: 单数求和:4195600 乘数:0
我正在尝试获得 13 和 7...
感谢一些帮助!
#include <stdio.h>
int main(void)
{
do
{
long card_number = get_long("Write your card's number:");
} while (card_number < 0);
// Sum of numbers that wont be multiplied by two
int non_mult_numbers = card_number;
while (non_mult_numbers > 0)
{
int last_digit = non_mult_numbers % 10;
int sum_non_mult_numbers = sum_non_mult_numbers + last_digit;
non_mult_numbers = non_mult_numbers / 100;
}
printf("Sum single numbers: %i\n", sum_non_mult_numbers);
// Sum of numbers that will be multiplied by two and their digits added
int mult_numbers = card_number;
mult_numbers = mult_numbers / 10;
while (mult_numbers > 0)
{
last_digit = mult_numbers % 10;
int digit_times_two = last_digit * 2;
int add_digits = add_digits + digit_times_two % 10 + digit_times_two / 10;
mult_numbers = mult_numbers / 100;
}
printf("Multiplied numbers: %i\n", add_digits);
}
【问题讨论】:
-
$我的提示:扔掉那个代码,把信用卡号当作一个字符串,然后对这个字符串进行处理。这要简单得多。
标签: c integer long-integer luhn