是什么导致了这两个循环的不同?
What is causing the difference in these two loops?
static void Main(string[] args)
{
int num = Convert.ToInt32(Console.ReadLine());
int res = 1;
while (res <= num)
{
res++;
if ((res % 2) == 0)
{
Console.WriteLine(res);
}
}
}
我使用 int 8、10 和 5 作为我的控制组,它们应该只输出从 1 开始到输入数字 (8,10,5) 的偶数。
static void Main(string[] args)
{
int num = Convert.ToInt32(Console.ReadLine());
for (int res = 1; res <= num; res++)
{
if ((res % 2) == 0)
{
Console.WriteLine(res);
}
}
}
谁能帮我理解一下?
在第一个循环中增加变量 res
,然后检查它是否偶数。
在第二个循环中,您检查它是否是事件,并在每次迭代结束时增加 res
变量的值。
不同之处在于,在第二个循环中,您在每次迭代的最后递增 res
(这就是 for 循环的工作方式),而在第一个循环中,您递增 res
在检查“偶数”之前。
这意味着当 res
为 5 并且 while 循环的新迭代开始时,res
首先递增到 6,并且 6 通过检查,导致打印 6。但是,在 for 循环中,res
在 5 未通过偶数检查后递增。然后迭代停止,因为 6 现在大于 5。
要使 while 循环与 for 循环相同,请将 res++
移至末尾:
while (res <= num)
{
if ((res % 2) == 0)
{
Console.WriteLine(res);
}
res++;
}
static void Main(string[] args)
{
int num = Convert.ToInt32(Console.ReadLine());
int res = 1;
while (res <= num)
{
res++;
if ((res % 2) == 0)
{
Console.WriteLine(res);
}
}
}
我使用 int 8、10 和 5 作为我的控制组,它们应该只输出从 1 开始到输入数字 (8,10,5) 的偶数。
static void Main(string[] args)
{
int num = Convert.ToInt32(Console.ReadLine());
for (int res = 1; res <= num; res++)
{
if ((res % 2) == 0)
{
Console.WriteLine(res);
}
}
}
谁能帮我理解一下?
在第一个循环中增加变量 res
,然后检查它是否偶数。
在第二个循环中,您检查它是否是事件,并在每次迭代结束时增加 res
变量的值。
不同之处在于,在第二个循环中,您在每次迭代的最后递增 res
(这就是 for 循环的工作方式),而在第一个循环中,您递增 res
在检查“偶数”之前。
这意味着当 res
为 5 并且 while 循环的新迭代开始时,res
首先递增到 6,并且 6 通过检查,导致打印 6。但是,在 for 循环中,res
在 5 未通过偶数检查后递增。然后迭代停止,因为 6 现在大于 5。
要使 while 循环与 for 循环相同,请将 res++
移至末尾:
while (res <= num)
{
if ((res % 2) == 0)
{
Console.WriteLine(res);
}
res++;
}