C#运算符模数?

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();
        }
    }
}

有人可以向我解释这段代码如何以及为什么可以计算三个数字的和吗?我对 % 究竟是如何工作的以及为什么这里需要除法感到困惑?这是如何工作的?

模数表示除法后的余数。在这种情况下,它用于隔离个位和十位中的数字。任何 mod 10 都会给你一个位的数字。是除以10后的余数,所以175 / 10 = 17,而175 % 10 = 5。为了得到十位,他们先除以 10,除以一个位(因为这是整数运算)。

您在这里要做的是计算数字的总和。

当你输入时假设是 123

1) sum = sum + (Threedigitnumber % 10);

(Threedigitnumber % 10); returns 余数,即当您除以 123/10 时,余数为 3。所以此时您的总和为 3

2) sum = sum + (Threedigitnumber / 10) % 10;

(Threedigitnumber / 10) returns 商即除以 123/10 商为 12,当您再次调用 mod (%) 时,它 returns 余数为 2 (12%10=2) 然后将其添加到现在变成 3+2=5 的总和;

3) sum = sum + (Threedigitnumber / 100);

(Threedigitnumber / 100) returns 商,即当您将 123 除以 100 时,它输出 1。将 1 加到您的总和后,您的总和现在变为 3+2+1=6

这是计算总和的糟糕方法 digits.An 更有效的方法是

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

假设你介绍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;