using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Program
{
class Program
{
static void Main(string[] args)
{
int num, reverse = 0;
Console.WriteLine("Enter a Number : ");
num = int.Parse(Console.ReadLine());
while (num != 0)
{
reverse = reverse * 10;
reverse = reverse + num % 10;
num = num / 10;
}
Console.WriteLine("Reverse of Entered Number is : "+reverse);
}
}
}
我可以理解在循环迭代期间反向累加的先前值的概念但是为什么WriteLine()也输出字符串“Retered of Entered Number is:”3次?我知道如果我在循环体中输入它但有反向输出仍然是:
blah blah blah: 3 // I understand this
" " : 32 // I thought this was going to output 2
" " : 321 // while this outputs 1
为什么“+ reverse”位是唯一执行的命令?而不是整条线?
对不起,如果这是一个非常基本或愚蠢的问题,我真的很烦我必须为它创建一个SO帐户。
答案 0 :(得分:2)
让我们来看看这个节目:
首先将变量num
和reverse
初始化为0
;
int num, reverse = 0;
现在,一个提示被写入控制台,Console.ReadLine()
用于读取用户的输入,该输入被解析为num
变量的整数:
Console.WriteLine("Enter a Number : ");
num = int.Parse(Console.ReadLine());
对于此示例,我们假设用户输入了值123
。
现在,只要num
未设置为0
while (num != 0)
{
在循环内部,reverse
的值乘以10
。第一次,这仍然是0
,因为0 * 10
是0
。
reverse = reverse * 10;
然后将num
模数10
添加到reverse
。基本上,这将返回用户输入的任何数字的最后一位数字。因此,如果用户输入123
,则第一次循环时将设置为3
。
reverse = reverse + num % 10;
现在,num
中存储的用户输入的值被10
划分。由于它是int
,因此小数值会被截断,因此123
会变为12
。
num = num / 10;
我们现在重新启动循环,但将num
设置为12
并将reverse
设置为3
。
在循环的顶部,reverse
再次乘以10
,因此它的新值为30
。
然后我们添加num
的最后一位数字2
,将reverse
设置为32
。
然后删除num
的最后一位数字,使其成为1
。
再次,我们循环,因为num
仍然不等于0
,这次num
设置为1
和reverse
设置到32
。
在循环的顶部,reverse
再次乘以10
,因此它的新值为320
。
然后我们添加num
的最后一位数字1
,将reverse
设置为321
。
然后删除num
的最后一位数字,使其成为0
。
这一次,num
等于0
,因此循环结束。
}
Console.WriteLine("Reverse of Entered Number is : "+reverse);
程序完成后打印字符串"Reverse of Entered Number is : "
,后跟最终值reverse
。