不要理解这个C循环

时间:2014-11-29 09:44:05

标签: c while-loop

任何人都可以向我解释这个循环是如何工作的吗?我知道第一个运算符计算其余数,第二个运算符计算其除法结果,但我无法理解它是如何使用循环对它们求和的?这是代码:

// 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);

4 个答案:

答案 0 :(得分:4)

它基本上是整数的 数字总和

示例:

输入==> 1234

输出==> 4 + 3 + 2 + 1 = 10

代码分解:

S [sum]初始化为0

循环:

  1. Z = N % 10;,将N%10的剩余部分存储到Z
  2. N = N / 10;,将N上的内容除以10并将结果存回N
  3. S = S + Z;,将S的内容与Z中的值相加。
  4. 之后,检查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.