余数(%)运算符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
这是一个非常基本的问题,我只是想更好地了解这个运算符的实际工作原理。
这段代码从用户那里获取一个数字,然后得到各个数字的总和:
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