Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用商和余数运算符提取并打印每个数字_C#_Console - Fatal编程技术网

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

C# 使用商和余数运算符提取并打印每个数字,c#,console,C#,Console,有谁能给我一些C#程序的逻辑或提示吗?该程序用7658值初始化一个整数变量n,然后使用商和余数运算符提取并打印n的每个数字。 我只需要一些建议,这样我就可以更进一步了。 我想以类似的方式显示它: n=7658 n的数字是7、6、5和8。几分钟前你问了同样的问题 我们告诉过你,这不是一个好的提问方式,但无论如何 int i = 7658; Console.WriteLine(i % 10); //Last digit. i = i / 10; Console.WriteLine(i % 10);

有谁能给我一些C#程序的逻辑或提示吗?该程序用7658值初始化一个整数变量n,然后使用商和余数运算符提取并打印n的每个数字。 我只需要一些建议,这样我就可以更进一步了。 我想以类似的方式显示它: n=7658
n的数字是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.
逻辑在这里

  • 7658%10=8
    (给出最后一位数字)看一看
  • 使用
    10创建
  • 当数字大于
    10
    时,继续执行步骤1
  • 作为一种视觉,我偷了一部分


    您可以编写如下的简短扩展方法:

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

    数字除以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的评论,我们使用了:因为我们使用了a,所以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
    
    代码中使用了最后一个公式

    顺便说一句,如果你将10替换为16,你将得到一个将数字转换为十六进制的算法,或者如果你将其替换为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]);
            }
    }
    
    public void SpillInt(){
    int n=7658;
    整数余数=0;
    整数除法器=10;
    IList结果=新列表();
    做
    {
    余数=n%除法器;
    结果。添加(余数);
    n=(n-余数)/10;
    }
    而(n>0);
    for(int i=result.Count;i>=0;i++)
    {
    控制台写入(结果[i]);
    }
    }
    
    inti=7658;
    Console.Write(“n是”);
    
    例如(int a=0;a你到目前为止都试过什么?例如,你认为你可能想要除以什么?我想用如下格式显示数字:n=7658 n的数字是7,6,5和8似乎是一个家庭作业。:)你几分钟前问过同样的问题吗,但是…@HaiderKhattak
    7658=7*(10^3)+6*(10^2)+5*(10^1)+8*(10^0)
    这个提示应该足够了。:)但是,这将以从右到左的相反顺序返回数字。这是正确的@SWeko,感谢您的注意。刚刚对扩展方法进行了编辑,该方法将数字放在堆栈上,并以相反的顺序返回它们10@HaiderKhattak你知道吗?
    %
    运算符在第一个操作数除以第二个操作数后计算余数。因此,当你使用
    7658%10
    时,提醒将是
    8
    @HaiderKhattak,正如你所知,
    7658=(765*10)+8
    @Grantwiney我投票支持soner,并告诉我的同事,他们也投票支持他。感谢soner&grant
    +1
    窃取了部分答案
    :)
    7 X 10^3 + 6 X 10^2 + 5 ^ 10 + 8, or
    (((7 * 10) + 6) * 10 + 5) * 10 + 8
    
    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]);
            }
    }
    
    int i = 7658;
    Console.Write("the n are");
    for(int a=0;a<=i;a++)
    {
        Console.Write( i%10+",");
        i = i / 10;
    }