跳到主要内容

C# for循环

提示
  1. for循环的基础:在 C# 中,for 循环通过初始化、条件测试和迭代器来重复执行代码块,直到条件不再为真。
  2. for循环的工作机制for 循环首先执行一次初始化语句,然后在每次循环迭代之前检查条件,并在每次迭代后执行迭代器。
  3. for循环的变体:C# 允许创建带有多个初始化和迭代器的 for 循环,也可以创建无初始化和迭代器的循环,甚至创建无限循环。

在编程中,我们经常希望将特定的代码块执行特定次数。一种可能的解决方案是将这些语句重复输入所需的次数。然而,重复的次数可能事先未知(在编译时)或可能非常多(比如 10000 次)。

对于此类问题,最佳解决方案是循环。在编程中,循环用于重复执行特定的代码块,直到满足某些条件。

在本文中,我们将看看 C# 中的 for 循环。

C# for 循环

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

for (初始化; 条件; 迭代器)
{
// for 循环体
}

for 循环如何工作?

  1. C# for 循环有三个语句:初始化条件迭代器
  2. 初始化 语句首先执行且仅执行一次。这里通常声明并初始化变量。
  3. 然后,评估 条件条件 是一个布尔表达式,即它返回 truefalse
  4. 如果 条件 被评估为 true
  5. for 循环内的语句被执行。
  6. 然后,执行 迭代器 语句,通常会改变初始化变量的值。
  7. 再次评估 条件
  8. 这个过程持续进行,直到 条件 被评估为 false

如果 条件 被评估为 false,for 循环终止。

for 循环流程图

C# for 循环流程图

示例 1:C# for 循环

using System;

namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
for (int i=1; i<=5; i++)
{
Console.WriteLine("C# For 循环:迭代 {0}", i);
}
}
}
}

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

C# For 循环:迭代 1
C# For 循环:迭代 2
C# For 循环:迭代 3
C# For 循环:迭代 4
C# For 循环:迭代 5

在这个程序中,

  • 初始化 语句是 int i=1
  • 条件 语句是 i<=5
  • 迭代器 语句是 i++

当程序运行时,

  • 首先,变量 i 被声明并初始化为 1。
  • 然后,评估条件 (i<=5)。
  • 由于条件返回 true,程序接着执行 for 循环的循环体。它打印出带有迭代 1 的给定行(迭代简单来说就是重复)。
  • 现在,评估迭代器 (i++)。这使 i 的值增加到 2。
  • 再次评估条件 (i<=5),并且最终,i 的值每次增加 1。前 5 次条件将评估为 true
  • i 的值为 6 且条件为 false 时,循环将终止。

示例 2:for 循环计算前 n 个自然数的和

using System;

namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
int n = 5, sum = 0;

for (int i=1; i<=n; i++)
{
// sum = sum + i;
sum += i;
}

Console.WriteLine("前 {0} 个自然数的和 = {1}", n, sum);
}
}
}

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

5 个自然数的和 = 15

这里,sumn 的值分别初始化为 0 和 5。迭代变量 i 初始化为 1,并在每次迭代时递增。

在 for 循环内部,sum 的值通过 i 增加,即 sum = sum + i。for 循环继续进行,直到 i 小于或等于 n(用户输入)。

让我们看看在给定程序的每次迭代中会发生什么。

最初,i = 1,sum = 0,n = 3

for 循环执行步骤

迭代次数i 的值i<=5sum 的值
110+1 = 1
221+2 = 3
333+3 = 6
446+4 = 10
5510+5 = 15
66循环终止

因此,当 n = 5 时,sum 的最终值将是 15。

for 循环内部的多重表达式

我们也可以在 for 循环中使用多重表达式。这意味着我们可以在 for 循环中有多于一个的初始化和/或迭代器语句。让我们看下面的示例。

示例 3:带有多重初始化和迭代器表达式的 for 循环

using System;

namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
for (int i=0, j=0; i+j<=5; i++, j++)
{
Console.WriteLine("i = {0} 和 j = {1}", i, j);
}
}
}
}

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

i = 0 和 j = 0
i = 1 和 j = 1
i = 2 和 j = 2

在这个程序中,我们在初始化语句中声明并初始化了两个变量:ij

同时,迭代器部分有两个表达式。这意味着每次迭代时 ij 都会增加 1。

没有初始化和迭代器语句的 for 循环

在 for 循环中,初始化、条件和迭代器语句是可选的。这意味着我们也可以在没有这些语句的情况下运行 for 循环。

在这种情况下,for 循环作为 while 循环 来执行。让我们看下面的示例。

示例 4:没有初始化和迭代器语句的 for 循环

using System;

namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
int i = 1;
for ( ; i<=5; )
{
Console.WriteLine("C# For 循环:迭代 {0}", i);
i++;
}
}
}
}

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

C# For 循环:迭代 1
C# For 循环:迭代 2
C# For 循环:迭代 3
C# For 循环:迭代 4
C# For 循环:迭代 5

在这个示例中,我们没有使用初始化和迭代器语句。

变量 i 在 for 循环上方初始化,其值在循环体内增加。这个程序与示例 1 中的程序相同。

同样,条件也是一个可选语句。然而,如果我们不使用测试表达式,for 循环将不会测试任何条件,将永远运行(无限循环)。

无限 for 循环

如果 for 循环中的条件始终为真,for 循环将永远运行。这被称为无限 for 循环。

示例 5:无限 for 循环

using System;

namespace Loop
{
class ForLoop
{
public static void Main(string[] args)
{
for (int i=1 ; i>0; i++)
{
Console.WriteLine("C# For 循环:迭代 {0}", i);
}
}
}
}

这里,i 初始化为 1,条件是 i>0。在每次迭代中,我们将 i 的值增加 1,所以条件永远不会为 false。这将导致循环无限执行。

我们也可以通过将条件替换为空来创建无限循环。例如,

for ( ; ; )
{
// for 循环的主体
}

for (初始化 ; ; 迭代器)
{
// for 循环的主体
}