Skip to content

Latest commit

 

History

History
239 lines (172 loc) · 5.7 KB

File metadata and controls

239 lines (172 loc) · 5.7 KB

C# while和do...while循环

原文: https://www.programiz.com/csharp-programming/do-while-loop

在本文中,我们将学习 C# 中的while和do...while循环,如何使用它们以及它们之间的区别。

在编程中,通常需要执行特定次数的语句块。 一种可能的解决方案是键入所需次数的语句。 但是,重复的次数可能事先未知(在编译时),或者可能不够大(例如 10000)。

此类问题的最佳解决方案是循环。 循环在编程中用于重复执行某个语句块,直到满足某些条件为止。

在本文中,我们将学习在 C# 中使用while循环。


C# while循环

while关键字用于在 C# 中创建while循环。while循环的语法为:

while (test-expression)
{
	// body of while
}

while循环如何工作?

  1. C# while循环由test-expression组成。
  2. 如果将test-expression求值为true,
    1. while循环内的语句被执行。
    2. 执行后,再次求值test-expression。
  3. 如果将test-expression求值为false,则while循环终止。

while循环流程图

C# while loop

示例 1:while循环

using System;

namespace Loop
{
	class WhileLoop
	{
		public static void Main(string[] args)
		{
			int i=1;
			while (i<=5)
			{
				Console.WriteLine("C# For Loop: Iteration {0}", i);
				i++;
			}
		}
	}
} 

当我们运行程序时,输出将是:

C# For Loop: Iteration 1
C# For Loop: Iteration 2
C# For Loop: Iteration 3
C# For Loop: Iteration 4
C# For Loop: Iteration 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。此时,test-expression的计算结果为false,因此循环终止。

示例 2:计算前 5 个自然数的和的while循环

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("Sum = {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 true 0+1 = 1
2 2 true 1+2 = 3
3 3 true 3+3 = 6
4 4 true 6+4 = 10
5 5 true 10+5 = 15
6 6 false 循环终止

因此,sum的最终值为 15。


C# do... while循环

do和while关键字用于创建do...while循环。 它类似于while循环,但是它们之间有很大的不同。

在while循环中,在执行主体之前检查条件。 与do...while循环完全相反,即在执行主体之后检查条件。

这就是为什么do...while循环的主体将至少执行一次,而与test-expression无关。

do...while循环的语法为:

do
{
	// body of do while loop
} while (test-expression);

do...while循环如何工作?

  1. 首先执行do...while循环的主体。
  2. 然后求值test-expression。
  3. 如果test-expression为true,则执行循环主体。
  4. 当test-expression为false时,do...while循环终止。

do...while循环流程图

Do while loop in c#

示例 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 时,test-expression计算为false,因此终止循环。

无限while和do...while循环

如果while和do...while循环中的测试表达式从不求值为false,则循环主体将永远运行。 这样的循环称为无限循环。

例如:

无限while循环

while (true)
{
	// body of while loop
}

无限do... while循环

do
{
	// body of while loop
} while (true);

只要我们需要程序运行,无限循环就很有用。

例如,如果您的程序是动画,则需要不断运行它,直到停止为止。 在这种情况下,无限循环是必要的,以使动画不断重复运行。