C# while和do...while循环
- 循环的概念:在 C# 中,
while
和do...while
循环用于重复执行一段代码,直到满足某个条件。 - while vs. do...while:
while
循环在执行循环体前检查条件,而do...while
循环至少执行一次循环体,然后检查条件。 - 无限循环:当循环的测试表达式永远不为
false
时,while
和do...while
循环会变成无限循环,这在需要持续执行某个操作时很有用。
在编程中,我们经常需要多次执行特定的语句块。一种可能的解决方案是将这些语句重复需要的次数。然而,重复的次数可能无法提前知道(在编译时)或可能非常多(比如 10000 次)。
对于这类问题的最佳解决方案是使用循环。在编程中,循环用于重复执行某个语句块,直到满足某些条件。
在这篇文章中,我们将学习在 C# 中如何使用 while 循环。
C# while 循环
while 关键字用于在 C# 中创建 while 循环。while 循环的语法是:
while (测试表达式)
{
// while 的主体
}
while 循环是如何工作的?
- C# while 循环包含一个
测试表达式
。 - 如果
测试表达式
计算结果为true
, - while 循环内的语句将被执行。
- 执行后,
测试表达式
会再次被计算。
如果 测试表达式
计算结果为 false
,while 循环终止。
while 循环流程图
示例 1:while 循环
using System;
namespace Loop
{
class WhileLoop
{
public static void Main(string[] args)
{
int i=1;
while (i<=5)
{
Console.WriteLine("C# 循环:迭代 {0}", i);
i++;
}
}
}
}
当我们运行程序时,输出将是:
C# 循环:迭代 1
C# 循环:迭代 2
C# 循环:迭代 3
C# 循环:迭代 4
C# 循环:迭代 5
最初 i
的值是 1。
当程序执行到 while 循环语句时,
- 测试表达式
i <=5
被计算。由于i
是 1 并且1 <= 5
为true
,它执行了 while 循环的主体。这里,屏幕上打印了带有迭代 1 的行,i
的值增加了 1 变成了 2。 - 现在,测试表达式 (
i <=5
) 再次被计算。这次也是,表达式返回true
(2 <= 5
),所以屏幕上打印了行并且i
的值增加到 3。 - 这样继续执行,while 循环一直进行,直到
i
变成 6。此时,测试表达式将计算为false
,因此循环终止。
示例 2:使用 while 循环计算前 5 个自然数的和
using System;
namespace Loop
{
class WhileLoop
{
public static void Main(string[] args)
{
int i=1, sum=0;
while (i<=5)
{
sum += i;
i++;
}
Console.WriteLine("和 = {0}", sum);
}
}
}
当我们运行程序时,输出将是:
Sum = 15
该程序计算前 5 个自然数的和。
- 最初
sum
的值初始化为 0。 - 在每次迭代中,
sum
的值更新为sum+i
,i
的值增加 1。 - 当
i
的值达到 6 时,测试表达式i<=5
将返回 false,循环终止。
让我们看看在给定程序的每次迭代中会发生什么。
最初,i
= 1,sum
= 0
while 循环执行步骤
迭代次数 | i 的值 | i<=5 | sum 的值 |
---|---|---|---|
1 | 1 | 真 | 0+1 = 1 |
2 | 2 | 真 | 1+2 = 3 |
3 | 3 | 真 | 3+3 = 6 |
4 | 4 | 真 | 6+4 = 10 |
5 | 5 | 真 | 10+5 = 15 |
6 | 6 | 假 | 循环终止 |
所以,sum
的最终值将是 15。
C# do...while 循环
do 和 while 关键字用于创建 do...while 循环。它类似于 while 循环,但它们之间有一个主要区别。
在 while 循环中,循环体执行之前会检查条件。在 do...while 循环中,恰恰相反,即条件在循环体执行之后检查。
这就是为什么,不管测试表达式如何,do...while 循环的循环体至少会执行一次。
do...while 循环的语法是:
do
{
// do while 循环的循环体
} while (test-expression);
do...while 循环如何工作?
- 首先执行 do...while 循环的循环体。
- 然后评估
test-expression
。 - 如果
test-expression
为true
,循环体会再次执行。 - 当
test-expression
为false
时,do...while 循环终止。
do...while 循环流程图
示例 3:do...while 循环
using System;
namespace Loop
{
class DoWhileLoop
{
public static void Main(string[] args)
{
int i = 1, n = 5, product;
do
{
product = n * i;
Console.WriteLine("{0} * {1} = {2}", n, i, product);
i++;
} while (i <= 10);
}
}
}
当我们运行程序时,输出将是:
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
如我们所见,上述程序打印了一个数(5)的乘法表。
- 最初,
i
的值是 1。然后程序进入 do..while 循环的循环体,而不检查任何条件(与 while 循环相反)。 - 在循环体内部,计算
product
并在屏幕上打印。然后i
的值增加到 2。 - 在执行循环体后,测试表达式
i <= 10
被评估。总共,do...while 循环将运行 10 次。 - 最后,当
i
的值为 11 时,测试表达式评估为false
,从而终止循环。
无限 while 和 do...while 循环
如果 while 和 do...while 循环中的测试表达式永远不评估为 false
,循环体将永远运行。这样的循环被称为无限循环。
例如:
无限 while 循环
while (true)
{
// while 循环体
}
无限 do...while 循环
do
{
// do...while 循环体
} while (true);
当我们需要一个循环在程序运行期间一直运行时,无限循环是有用的。
例如,如果你的程序是一个动画,你将需要不断地运行它,直到它被停止。在这种情况下,无限循环是必要的,以不断重复地运行动画。