任何人都可以向我解释这个循环是如何工作的吗?我知道第一个运算符计算其余数,第二个运算符计算其除法结果,但我无法理解它是如何使用循环对它们求和的?这是代码:
// Calculate the sum of the digits of the number N.
int N, S, Z;
S = 0;
printf("Input N\n");
scanf("%d", &N);
while(N != 0) {
Z = N % 10;
N = N / 10;
S = S + Z;
}
printf("Sum = %d\n", S);
答案 0 :(得分:4)
它基本上是整数的 数字总和 。
示例:
输入==> 1234
输出==> 4 + 3 + 2 + 1 = 10
代码分解:
将S
[sum]初始化为0
。
循环:
Z = N % 10;
,将N
后%10
的剩余部分存储到Z
。N = N / 10;
,将N
上的内容除以10并将结果存回N
。S = S + Z;
,将S
的内容与Z
中的值相加。之后,检查N
的修改值是否为0。如果没有,继续[1,2,3 ..)
建议:
始终检查scanf("%d", &N);
是否成功。如果scanf()
失败,您的代码会尝试访问未初始化的变量N
,这可能会导致未定义的行为。
答案 1 :(得分:4)
这个while循环会添加N所引用的数字的所有数字。它除以10之后的剩余数字加上所有数字。每次都会消除数字的最后一位数字。因此,如果您的号码是326,它将像:
326 != 0
Z = 6
N = 32
S = 6
32 != 0
Z = 2
N = 3
S = 8
3 != 0
Z = 3
N = 0
S = 11
0 == 0 come out of loop
print value of S i.e. 11
答案 2 :(得分:1)
我们举个例子来看657:
Z = N % 10; // This line will store 7 in Z
N = N / 10; // this line will convert N to 65
S = S + Z; // and finally this line will add 0+7
答案 3 :(得分:1)
循环将执行,直到n值变为零。例如
N = 123
然后第一次变量的值是 Z:3:N:12:S:3
第二次 Z:2:N:1:S:5
第三次 Z:1:N:0:S:6
最后,S的答案是3 + 2 + 1 = 6.