gpt4 book ai didi

c - 如何在 C 中遍历整数的数字?

转载 作者:行者123 更新时间:2023-12-04 12:34:07 25 4
gpt4 key购买 nike

我需要在没有任何高级内容的情况下以某种方式遍历 C 中的整数。我真的不明白用 10 修改一个数字与这次迭代有什么关系,或者它如何神奇地返回最后一个整数。 有人可以解释如何执行此操作并遍历整数并用 C 语言向我展示代码吗?

我的代码根本不工作,实际上什么都不做,没有输出。但请告诉我。

#include <stdio.h>
int main (void)
{
printf("Enter a value.\n");
int x = 0;
scanf("%d", &x);
while (x < 0)
{
printf("Enter another integer please.\n");
scanf("%d", &x);
}
int counter = 0;
// tries to iterate through freaking integer but literally doesn't work or does nothing
while (x > 0)
{
counter = counter + x;
x = x % 10;

}
printf("The total sum of the integer's digits are %d\n", counter);


}

最佳答案

您的代码中有几个问题。

首先是做

x = scanf("%d", &x);

scanf() 将其参数 x 设置为输入,然后返回它分配的变量数,即 1。然后 x = 赋值将输入替换为 1。因此,无论您输入什么,您都将 x 设置为 1。只需使用 scanf("%d", &x) 而不分配给变量。

下一个问题是循环数字的代码。 % 运算符返回除法的余数。所以 x % 10 返回 x 除以 10 的余数,这是数字的最后一位(例如 123/10 返回 123 的余数)。当你做的时候

x = x % 10;

你进入了一个无限循环,因为一旦你到达一个数字,你就一直将 x 设置为它自己(除非最后一个数字是 0,这会失败while (x > 0) 条件)。这就是为什么您的程序似乎什么也没做——它永远不会跳出这个循环。

您应该将最后一位数字添加到计数器,然后通过除以除以 10 来删除最后一位数字。因此循环应该是:

    while (x > 0)
{
counter = counter + x % 10;
x = x / 10;
}

修改后的代码是:

#include <stdio.h>
int main (void)
{
printf("Enter a value.\n");
int x = 0;
scanf("%d", &x);
while (x < 0)
{
printf("Enter another integer please.\n");
scanf("%d", &x);
}
int counter = 0;
while (x > 0)
{
counter = counter + x % 10;
x = x / 10;
}
printf("The total sum of the integer's digits are %d\n", counter);
}

下面是模数和除法如何遍历数字。

假设您有一个数字 x = 5649

当您计算 x % 10 时,会返回最后一位,即 9。然后设置 x = x/10;,将其设置为 564 —— 没有最后一位的数字。

下一次通过循环,您计算 x % 10,它返回最后一位数字,即 4。然后您设置 x = x/10;,这会将其设置为 56 - 同样,没有最后一位的数字。

下次计算 x % 10 时,返回 6。然后 x = x/10 将其设置为 5

下次您计算 x % 10 时,将返回 5。然后 x = x/10 将其设置为 0

现在循环停止,因为条件是 x > 0,它不再为真。

如您所见,循环从右到左遍历数字,因为每次它通过除以 10 删除最后一个数字。同时,您将每个数字添加到 counter当你做 counter = counter + x % 10;

关于c - 如何在 C 中遍历整数的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66289234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com