- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在没有任何高级内容的情况下以某种方式遍历 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
返回 12
和 3
的余数)。当你做的时候
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/
我是一名优秀的程序员,十分优秀!