我怎样才能更好地理解这段代码?这个函数的重点是让用户输入数字,程序返回反向数字。
我只是想知道它是如何工作的,在反向函数中到底是什么在做反向?我试着做数学,但我一直遇到障碍。
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;
}
}
所以在 reverse 函数中发生的事情如下:
该行除以n
10 并取余数,有效地取数字的最后一位。
temp = n % 10;
此行将反转数字中的所有数字向左移动一位,并将temp
数字添加到其右侧。
rev = (rev * 10) + temp;
此行从原始数字中删除最后一位数字。结合 while 循环,这意味着循环将一直持续到从 中删除每个数字n
。
n = n / 10;
也许通过一个例子更清楚:
让我们从n = 12345
. 我们取最后一位数字temp = n % 10;
,即 5。接下来我们通过rev = (rev * 10) + temp;
。rev
从 0 开始。0 * 10 = 0, + 5 = 5。所以现在rev = 5
。我们从n
with 中删除最后一位数字n = n / 10;
。所以现在n = 1234
和rev = 5
。
在下一迭代中,我们采取的最后一位n
,4.rev
目前是5.5 * 10 = 50,+ 4 = 54除去最后一位后,n = 123
和rev = 54
。
在下一迭代中,我们采取的最后一位n
,3.rev
目前是54 54 * 10 = 540,+ 3 = 543除去最后一位后,n = 12
和rev = 543
。
在下一迭代中,我们采取的最后一位n
,2.rev
目前是543 543 * 10 = 5430,+ 2 = 5432。在去掉最终的数字后,n = 1
和rev = 5432
。
在下一次迭代中,我们取 1 的最后一个(也是唯一的)数字n
。rev
当前是 5432。5432 * 10 = 54320,+ 1 = 54321。在删除最后一个数字后,n = 0
和rev = 54321
。
while( n != 0)
现在是假的,所以没有下一次迭代。函数以n = 0
and结尾,rev = 54321
它返回 的值rev
,即 54321,与 12345 相反。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句