Неизвестное значение цикла for для алгоритма Луна - PullRequest
0 голосов
/ 05 марта 2019

У меня есть этот код, и по некоторым причинам я получаю очень большое число на каждой итерации цикла for и не могу понять логику.

#include <stdio.h>
#include <cs50.h>
#include <math.h>
#include <string.h>

int main(void)
{
    long CARD, digits, digit, odd, sum;

// prompting the user for a positive card number and checking the length  
    do
    {
        CARD = get_long("Please insert your card number: ");
        digits = floor(log10(labs(CARD)) + 1);
    }
    while (digits < 9 || digits > 16);

// Getting every other digit from the end (starting with the second to last)and adding the digits together   
    for (int i = 0; i < digits; i++)
    {
        CARD /= 10;
            printf("%ld\n", CARD);
        odd = CARD % 10;
            printf("%ld\n", odd);
        sum = sum + odd;
            printf("%ld\n", sum);
        CARD /= 10;
    }
}

Хорошо, поэтому я ввожу номер 1234567890 и пропускаю цикл do-while, а когда я вхожу в цикл for, я получаю следующие значения (первые 3 отображения):

123456789

9

140443976194473 (но я ожидаю, что это будет 9)

1 Ответ

0 голосов
/ 06 марта 2019

Вы не инициализировали sum. Он должен быть определен как long sum = 0; или установлен на 0 перед его использованием. & Ndash; Флюгер

...