使用商和余数运算符提取和打印每个数字

本文关键字:打印 数字 提取 运算符 余数 | 更新日期: 2023-09-27 18:30:45

谁能给我一些 C# 程序的逻辑或提示,该程序使用值 7658 初始化整数变量 n,然后使用商运算符和余数运算符提取和打印 n 的每个数字。我只需要一些建议,以便我可以继续下去。我想以这样的方式显示它:n= 7658n 的数字是 7、6、5 和 8。

使用商和余数运算符提取和打印每个数字

你几分钟

前问了同样的问题。

我们告诉过你,这不是在这里提问的好方法,但无论如何......

int i = 7658;
Console.WriteLine(i % 10); //Last digit.
i = i / 10;
Console.WriteLine(i % 10); //Third digit.
i = i / 10;
Console.WriteLine(i % 10); //Second gidit.
i = i / 10;
Console.WriteLine(i % 10); //First digit.

逻辑在这里;

  1. 7658 % 10 = 8(给出最后一个数字)看看% Operator
  2. 10进行整数除法
  3. 当数字大于 10 时继续执行步骤 1。

作为视觉效果,我窃取了SWeko答案的一部分;

7658 % 10 = 8
765 % 10 = 5
76 % 10 = 6
7 % 10 = 7
int i = 7658;
Console.Write("the n are");
for(int a=0;a<=i;a++)
{
    Console.Write( i%10+",");
    i = i / 10;
}

你可以编写一个简短的扩展方法,如下所示:

public static class Helper {
    public static IEnumerable<int> EnumerateDigits(this int @this) {
        Stack<byte> stack = new Stack<byte>();
        do {
            var digit = (byte)(@this % 10);
            stack .Add(digit);
            @this /= 10;
        } while (@this != 0);
        while (stack .Count > 0)
            yield return stack.Pop();
    }
}

然后,你可以使用该方法,与任何int,而不仅仅是数字7658,如下所示:

public static void Main(string[] args) {
     int someNumber = ...
     foreach (var digit in someNumber.EnumerateDigits())
         Console.WriteLine(digit);
     Console.ReadKey();
}

一个数字除以 10 的提醒是该数字的最后一位数字:

7658 % 10 = 8
765 % 10 = 5
76 % 10 = 6
7 % 10 = 7

一个数字的商除以 10 是该数字的数字,最后一个数字除外:

7658 / 10 = 765
765 / 10 = 76
76 / 10 = 7
7 / 10 = 0

因此,您可以循环直到给定的数字为 0,并重复提取最后一个数字,以分别获取每个数字。


为了解决OP关于使用10的值的评论:由于我们使用位置数字书写系统,因此编写7658基本上是编写的简写:

7 thousand, 6 hundred, 5 tens, and 8 units.

在最后一个语句中,千是 1000,或 10 * 10 * 10,百是 100,或 10 * 10,十是,毫不奇怪是 10,单位是 1(从数学上讲,它是 10 乘以自身零次),所以 7658 是:

7 X 10^3 + 6 X 10^2 + 5 ^ 10 + 8, or
(((7 * 10) + 6) * 10 + 5) * 10 + 8

代码中使用最后一个公式。

顺便说一下,如果你用16替换10,你会得到一个将数字转换为十六进制系统的算法,或者如果你用2替换它,你会得到数字的二进制数字。

试试这个:

public  void SpillInt(){
        int n = 7658;
        int remainder = 0;
        int divider = 10;
        IList<int> result = new List<int>();
        do
        {
                   remainder = n % divider;
            result.Add(remainder);
            n = (n - remainder) / 10;
        }
        while (n > 0);
                    for (int i = result.Count; i >= 0; i++)
        {
            Console.Write(result[i]);
        }
}