c#请解释为什么这样做,

-5 c#

我不明白这个程序是如何工作的,如果将原始总和设置为0,则将其r(remainder)添加到总和中0.这两位数的正确总和怎么样?我觉得它应该像这样......sum = num + r;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Application
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            int num, sum = 0, r;
            Console.WriteLine("Enter a Number : ");
            num = int.Parse(Console.ReadLine());
            while (num != 0)
            {
                r = num % 10;
                num = num / 10;
                **sum = sum + r;**
            }
            Console.WriteLine("Sum of Digits of the Number : "+sum);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

不要忘记它是在循环中.sum第一次迭代时为0,但在第二次迭代时,它包含最后一位数的值.

所以想象你有一些195692.它会经历7次迭代:

num      sum (before)   r    sum (after)
195692     0            2      2
 19569     2            9     11
  1956    11            6     17
   195    17            5     22
    19    22            9     31
     1    31            1     32
Run Code Online (Sandbox Code Playgroud)

所以结果是32,即1 + 9 + 5 + 6 + 9 + 2.

请注意,您可以通过在代码中添加一些诊断线来自己生成该表...或者您可以通过调试代码来查看它是如何工作的"直播",从而在笔和纸上生成它.

如果你有sum = r + num,那么将最后一位数字加到将数字除以10的结果上......并完全忽略前一个总和.