Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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# - Fatal编程技术网

C# 如何理解此函数以接受数字作为输入并将其反转?

C# 如何理解此函数以接受数字作为输入并将其反转?,c#,C#,如何更好地理解此代码?此函数的作用是让用户输入数字,程序返回相反的数字 我只是想知道它是如何工作的,在反转函数中,到底是什么在做反转?我试着做数学题,但总是遇到障碍 class Program { static void Main(string[] args) { int n = 0, result = 0; Console.WriteLine("Please Enter a Number: "); n = Convert.ToI

如何更好地理解此代码?此函数的作用是让用户输入数字,程序返回相反的数字

我只是想知道它是如何工作的,在反转函数中,到底是什么在做反转?我试着做数学题,但总是遇到障碍

class Program
{
    static void Main(string[] args)
    {
        int n = 0, result = 0;

        Console.WriteLine("Please Enter a Number: ");
        n = Convert.ToInt32(Console.ReadLine());

        result = reverse(n);
        Console.WriteLine("The Reverse Number Is : " + result);
        Console.ReadKey();        
    }

    public static int reverse(int n)
    {
        int temp = 0, rev = 0;

        while( n != 0)
        {
            temp = n % 10;
            rev = (rev * 10) + temp;
            n = n / 10;
        }

        return rev;
    }
}

代码
n%10
返回
n/10
的剩余值。因此,在第一次迭代中,您从右侧获得第一个数字,并将其放入temp。然后使用
n=n/10
省略第一个数字,并准备再次使用
n%10
获取第二个数字。要将第二个数字添加到第一个数字的右侧,我们可以使用
rev=(rev*10)
将第一个数字推到左侧,并使用
rev=(rev*10)+temp
将第二个数字添加到rev的右侧


我认为这个问题与stackoverflows无关,但stackoverflows要求成员帮助新的贡献者更好地探索这里。更多问题,请阅读本手册

因此,反向函数中发生的情况如下所示:

这一行将
n
除以10并取余数,实际上取数字的最后一位

temp=n%10;


此行将倒数1中的所有数字向左移动,并将
temp
数字添加到其右侧

rev=(rev*10)+温度;


此行从原始数字中删除最后一位数字。与while循环相结合,这意味着循环将继续,直到从
n
中删除每个数字

n=n/10;


也许通过一个例子更清楚:

让我们从
n=12345
开始。我们采用
temp=n%10的最后一位数字,即5。接下来,我们将通过
rev=(rev*10)+temp<代码>版本
从0开始。0 * 10 = 0, + 5 = 5. 所以现在
rev=5
。我们用
n=n/10从
n
中删除最后一个数字。所以现在
n=1234
rev=5

在下一次迭代中,我们取最后一位
n
,4<代码>版本当前为5。5 * 10 = 50, + 4 = 54. 删除最后一位后,
n=123
rev=54

在下一次迭代中,我们取最后一位
n
,3<代码>修订版
目前为54。54 * 10 = 540, + 3 = 543. 删除最后一位后,
n=12
rev=543

在下一次迭代中,我们取最后一位
n
,2<代码>修订版
目前为543。543 * 10 = 5430, + 2 = 5432. 删除最后一位后,
n=1
rev=5432

在下一次迭代中,我们取
n
,1的最后一位(也是唯一一位)<代码>修订版目前为5432。5432 * 10 = 54320, + 1 = 54321. 删除最后一位后,
n=0
rev=54321


while(n!=0)
现在为false,因此没有下一次迭代。该函数以
n=0
rev=54321
结束,并返回
rev
的值,即54321,与12345相反。

您试过调试代码吗?请具体说明。您不了解哪一部分?您应该使用调试器并查看反向函数中涉及的变量。一步一步地观察它们是如何变化的,这将有助于理解该功能是如何工作的。一如既往,作为一名程序员意味着了解和使用行业工具。而调试器是最重要的一个工具——用铅笔和纸。选择一个数字,例如123。现在,逐行操作反向功能,并跟踪温度、转速和n。我发现这种方法有助于澄清到底发生了什么。假设数字是293。293除以10的余数是3,对吗?所以温度=3。我们在行Rev=(Rev * 10)+TEMP中乘以10,当最后一步N除以10时该如何返回293?顺便说一下,如果一个答案(或答案)对一个谢谢你足够有用的话,考虑一下投票吧。此外,如果其中一个答案完全回答了您的问题,您应该接受它。