为什么条件相同的两个 while 循环中的第二个循环不起作用?

Why is the second of two while loops with identical condition not working?

我现在正在学习 CS50 CS 简介。我试图解决第 1 组,Credit。该程序尚未完成,我只是想确保它正确计数。这是我的代码,它取自用户输入的正数。第一个 while 循环计算倒数第二个数字并将它们加在一起并给出输出,第二个 while 计算每个最后一个数字并相加。

如果我 运行 分别计算两个 while 循环,它们都可以正确计数。就我而言,现在它只计算第一时间。 我会感谢你的帮助!

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

int main(void)
{
    long credit;
    int multiply_by_two, sum_by_two = 0, sum = 0;
    do
    {
        credit = get_long("Number: ");
    }
    while (credit < 0);

    while (credit != 0)
    {
        long second_digit =  credit / 10;
        long last_digit = second_digit % 10;
        multiply_by_two = last_digit * 2;
        if (multiply_by_two > 9)
        {
            sum_by_two += multiply_by_two % 10 + multiply_by_two / 10;
        } else
        {
            sum_by_two += multiply_by_two;
        }
        credit = credit /100;
    }
    while (credit != 0)
    {
        long first_digit = credit % 10;
        sum += first_digit;
        credit = credit / 100;
    }
    printf("First total sum: %d\n", sum_by_two);
    printf("Second total sum: %d\n", sum);
}

第一个while (credit != 0)显然以credit==0结尾。
第二个 while (credit != 0) 确保正文仅在 credit != 0.

时执行

您可能希望第二个循环处理初始 credit 的副本,而不是保证为 0 的内容。

(因为
这里特意不提供解决方案 How do I ask and answer homework questions?)