[英]C# Operator Modulus?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WholeNumbers1
{
class Program
{
static void Main(string[] args)
{
int sum = 0;
int Threedigitnumber;
Console.WriteLine("Enter in three whole numbers");
Threedigitnumber = int.Parse(Console.ReadLine());
sum = sum + (Threedigitnumber % 10); // Add third digit to sum
sum = sum + (Threedigitnumber / 10) % 10; // Add seconed digit to sum
sum = sum + (Threedigitnumber / 100); // Add first digit to sum
Console.WriteLine("{0} -> {1}", Threedigitnumber, sum);
Console.ReadKey();
}
}
}
有人可以向我解釋一下這段代碼如何以及為什么可以計算三個數字的總和嗎? 我對 % 究竟是如何工作的以及為什么這里需要除法感到困惑? 這是如何運作的?
您在這里嘗試做的是計算數字總和。
當您輸入時,可以說是 123
1) sum = sum + (Threedigitnumber % 10);
(Threedigitnumber % 10);
返回余數,即當您除以 123/10 時,余數為 3 。所以此時您的總和為3
2) sum = sum + (Threedigitnumber / 10) % 10;
(Threedigitnumber / 10)
返回商,即當您除以 123/10 時,商為 12,當您再次調用 mod (%) 時,它將余數返回為 2 (12%10=2),然后將其添加到現在的總和中3+2=5;
3) sum = sum + (Threedigitnumber / 100);
(Threedigitnumber / 100)
返回商,即當您將 123 除以 100 時,它會輸出 1。在您的總和上加 1 后,您的總和現在變為 3+2+1=6
這是計算數字總和的糟糕方法。更有效的方法是
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();
模數意味着除法后的余數。 在這種情況下,它用於隔離個位和十位的數字。 任何mod 10
都會給你一個數字。 它是除以 10 后的余數。所以175 / 10 = 17
,而175 % 10 = 5
。 為了得到十位,他們先除以 10,這個除法完全去掉了一個位(因為這是整數算術)。
假設您引入 123。
Step 1: 123 % 10 = 3;
Sum = 3
Step 2: 123 / 10 = 12;
12 % 10 = 2;
Sum = 5
Step 3: 123 / 100 = 1;
Sum = 6;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.