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?顺便说一下,如果一个答案(或答案)对一个谢谢你足够有用的话,考虑一下投票吧。此外,如果其中一个答案完全回答了您的问题,您应该接受它。