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

2024-06-16

我现在正在学习 CS50 CS 简介。我试图解决第一组,信用。该程序尚未完成,我只是想确保它计数正确。这是我的代码,它从用户输入中获取正数。第一个 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 的东西。

(这里故意不提供解决方案,因为
我如何提出和回答家庭作业问题? https://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐