余数(%)运算符c#

remainder (%) operator c#

这是一个非常基本的问题,我只是想更好地了解这个运算符的实际工作原理。

这段代码从用户那里获取一个数字,然后得到各个数字的总和:

Console.WriteLine("Please enter a number: ");
int number = Convert.ToInt32(Console.ReadLine());
int sum = 0;

while (number / 10 > 0)
{
    ***sum += number % 10;***
    number = number / 10;
}

sum += number;
Console.WriteLine("{0}{1}", "Sum of digits is: ", sum.ToString());
Console.ReadKey();`
sum += number % 10;

我的解释是,因为 sum = 0,它基本上取数字,将其除以 10,然后将余数分配给总和?

这是对的还是我理解错了?

提前感谢您的帮助

让我们取一个数字 = 512: 现在在 while 循环中:

sum += number % 10;

总和就像

sum = sum + number % 10

并且number % 10

512 % 10 = 2

怎么做??

512 = 50 * 10 + 2 

以上2为余数。 现在

number = number / 10

使得 number 512 to 51

这就是您的代码在每次迭代中将每个数字添加到总和中的方式。 所以,你没看错,它正在计算一个数字的每个数字的总和。

% 称为模数,除以

时得到余数

如果你还记得长除法,它是这样的:

16/5=3 remainder 1

模数运算符将 return 1 像

那样完成
16%5

根据您的使用方式,它可能非常有用...您可以在 if 条件、循环等中使用它...

检查输出你可以了解每一步以及每一步发生了什么

using System;
class MainClass {
  public static void Main (string[] args) {
    Console.WriteLine("Please enter a number: ");
    int number = Convert.ToInt32(Console.ReadLine());
    int sum = 0;
    while (number> 0)
    {
      Console.WriteLine("Steps");
      Console.WriteLine("--------------");
      Console.WriteLine("Digits: "+ (number % 10));
      sum = sum + (number % 10);
       Console.WriteLine("sum: "+ sum);
      number = number / 10;
      Console.WriteLine("number after number/10: "+ (number).ToString());
      Console.WriteLine("--------------");
    }
Console.WriteLine("{0}{1}", "Sum of digits is: ", sum.ToString());
  }
}

输出:

Please enter a number: 
 9874
Steps
--------------
Digits: 4
sum: 4
number after number/10: 987
--------------
Steps
--------------
Digits: 7
sum: 11
number after number/10: 98
--------------
Steps
--------------
Digits: 8
sum: 19
number after number/10: 9
--------------
Steps
--------------
Digits: 9
sum: 28
number after number/10: 0
--------------
Sum of digits is: 28