• C#(Csharp)笔记十一——C#循环


    一丶循环

    有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

    编程语言提供了允许更为复杂的执行路径的多种控制结构。

    循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:
    在这里插入图片描述

    二丶循环类型

    C# 提供了以下几种循环类型。点击链接查看每个类型的细节。

    循环类型描述
    while 循环当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
    for/foreach 循环多次执行一个语句序列,简化管理循环变量的代码。
    do…while 循环除了它是在循环主体结尾测试条件外,其他与 while 语句类似。
    嵌套循环您可以在 while、for 或 do…while 循环内使用一个或多个循环。

    1.while循环

    只要给定的条件为真,C# 中的 while 循环语句会重复执行一个目标语句。

    (1)语法

    C# 中 while 循环的语法:

    while(condition)
    {
       statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4

    在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。

    当条件为假时,程序流将继续执行紧接着循环的下一条语句。

    (2)流程图

    在这里插入图片描述

    在这里,while 循环的关键点是循环可能一次都不会执行。当条件被测试且结果为假时,会跳过循环主体,直接执行紧接着 while 循环的下一条语句。

    (3)实例

    using System;
    
    namespace Loops
    {
       
        class Program
        {
            static void Main(string[] args)
            {
                /* 局部变量定义 */
                int a = 10;
    
                /* while 循环执行 */
                while (a < 20)
                {
                    Console.WriteLine("a 的值: {0}", a);
                    a++;
                }
                Console.ReadLine();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    当上面的代码被编译和执行时,它会产生下列结果:
    在这里插入图片描述

    2.for/foreach 循环

    一个 for 循环是一个允许您编写一个执行特定次数的循环的重复控制结构。

    (1)语法

    C# 中 for 循环的语法:

    for ( init; condition; increment )
    {
       statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4

    下面是 for 循环的控制流:

    1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
    2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for
      循环的下一条语句。
    3. 在执行完 for 循环主体后,控制流会跳回上面的 increment语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
    4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for
      循环终止。

    (2)流程图

    在这里插入图片描述

    (3)实例

    using System;
    
    namespace Loops
    {
       
        class Program
        {
            static void Main(string[] args)
            {
                /* for 循环执行 */
                for (int a = 10; a < 20; a = a + 1)
                {
                    Console.WriteLine("a 的值: {0}", a);
                }
                Console.ReadLine();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    当上面的代码被编译和执行时,它会产生下列结果:
    在这里插入图片描述

    (4)foreach

    C# 也支持 foreach 循环,使用foreach可以迭代数组或者一个集合对象。

    以下实例有三个部分:

    • 通过 foreach 循环输出整型数组中的元素。
    • 通过 for 循环输出整型数组中的元素。
    • foreach 循环设置数组元素的计算器。
    class ForEachTest
    {
        static void Main(string[] args)
        {
            int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5, 8, 13 };
            foreach (int element in fibarray)
            {
                System.Console.WriteLine(element);
            }
            System.Console.WriteLine();
    
    
            // 类似 foreach 循环
            for (int i = 0; i < fibarray.Length; i++)
            {
                System.Console.WriteLine(fibarray[i]);
            }
            System.Console.WriteLine();
    
    
            // 设置集合中元素的计算器
            int count = 0;
            foreach (int element in fibarray)
            {
                count += 1;
                System.Console.WriteLine("Element #{0}: {1}", count, element);
            }
            System.Console.WriteLine("Number of elements in the array: {0}", count);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    输出结果为:

    在这里插入图片描述

    3.do…while 循环

    不像 for 和 while 循环,它们是在循环头部测试循环条件。do…while 循环是在循环的尾部检查它的条件。

    do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环。

    (1)语法

    C# 中 do…while 循环的语法:

    do
    {
       statement(s);
    
    }while( condition );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。

    如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。

    (2)流程图

    在这里插入图片描述

    (3)实例

    using System;
    
    namespace Loops
    {
       
        class Program
        {
            static void Main(string[] args)
            {
                /* 局部变量定义 */
                int a = 10;
    
                /* do 循环执行 */
                do
                {
                   Console.WriteLine("a 的值: {0}", a);
                    a = a + 1;
                } while (a < 20);
    
                Console.ReadLine();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    当上面的代码被编译和执行时,它会产生下列结果:
    在这里插入图片描述

    4.嵌套循环

    C# 允许在一个循环内使用另一个循环,下面演示几个实例来说明这个概念。

    (1)语法

    C# 中 嵌套 for 循环 语句的语法:

    for ( init; condition; increment )
    {
       for ( init; condition; increment )
       {
          statement(s);
       }
       statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    C# 中 嵌套 while 循环 语句的语法:

    while(condition)
    {
       while(condition)
       {
          statement(s);
       }
       statement(s);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    C# 中 嵌套 do…while 循环 语句的语法:

    do
    {
       statement(s);
       do
       {
          statement(s);
       }while( condition );
    
    }while( condition );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    关于嵌套循环有一点值得注意,您可以在任何类型的循环内嵌套其他任何类型的循环。比如,一个 for 循环可以嵌套在一个 while 循环内,反之亦然。

    (2)实例

    using System;
    
    namespace Loops
    {
       
       class Program
       {
          static void Main(string[] args)
          {
             /* 局部变量定义 */
             int i, j;
    
             for (i = 2; i < 100; i++)
             {
                for (j = 2; j <= (i / j); j++)
                   if ((i % j) == 0) break; // 如果找到,则不是质数
                if (j > (i / j))
                   Console.WriteLine("{0} 是质数", i);
             }
    
             Console.ReadLine();
          }
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    当上面的代码被编译和执行时,它会产生下列结果:
    在这里插入图片描述

    三丶循环控制语句

    循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。

    C# 提供了下列的控制语句。点击链接查看每个语句的细节。

    控制语句描述
    break 语句终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。
    continue 语句引起循环跳过主体的剩余部分,立即重新开始测试条件。

    1.break语句

    (1)语法

    C# 中 break 语句的语法:

    break;
    
    • 1

    (2)流程图

    在这里插入图片描述

    (3)实例

    using System;
    
    namespace Loops
    {
       
        class Program
        {
            static void Main(string[] args)
            {
                /* 局部变量定义 */
                int a = 10;
    
                /* while 循环执行 */
                while (a < 20)
                {
                    Console.WriteLine("a 的值: {0}", a);
                    a++;
                    if (a > 15)
                    {
                        /* 使用 break 语句终止 loop */
                        break;
                    }
                }
                Console.ReadLine();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    当上面的代码被编译和执行时,它会产生下列结果:
    在这里插入图片描述

    2.continue语句

    C# 中的 continue 语句有点像 break 语句。但它不是强迫终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。

    对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do…while 循环,continue 语句会导致程序控制回到条件测试上。

    (1)语法

    C# 中 continue 语句的语法:

    continue;
    
    • 1

    (2)流程图

    在这里插入图片描述

    (3)实例

    using System;
    
    namespace Loops
    {
       
        class Program
        {
            static void Main(string[] args)
            {
                /* 局部变量定义 */
                int a = 10;
    
                /* do 循环执行 */
                do
                {
                    if (a == 15)
                    {
                        /* 跳过迭代 */
                        a = a + 1;
                        continue;
                    }
                    Console.WriteLine("a 的值: {0}", a);
                    a++;
    
                } while (a < 20);
     
                Console.ReadLine();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    当上面的代码被编译和执行时,它会产生下列结果:
    在这里插入图片描述

    四丶无限循环

    如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。

    using System;
    
    namespace Loops
    {
       
        class Program
        {
            static void Main(string[] args)
            {
                for (; ; )
                {
                    Console.WriteLine("Hey! I am Trapped");
                }
     
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,程序员偏向于使用 for(;😉 结构来表示一个无限循环。

  • 相关阅读:
    泰山派学习笔记(二)一步一步编译SDK文件
    云原生 | Kubernetes - 通过KubeKey用脚搭建k8s高可用集群 + KubeSphere
    为什么TDM更适合数字传输?(模拟信号与数字信号传输比较,TDM与FDM传输方式比较)
    化工园区数字孪生可视化管控平台,赋予园区安全环保智慧发展
    R语言基于with函数对指定的协变量执行双样本t检验、t.test函数对不同分组对应的协变量的均值进行Welch双样本t检验分析、双独立样本t检验
    基于Java实现的语法分析器
    学习记忆——图像篇——记忆古诗词
    【系列】经典算法题 :排序算法空间
    Vue-ref属性(脚手架获取DOM元素)、props配置、mixin混入、插件、scoped样式
    其他数据库小知识
  • 原文地址:https://blog.csdn.net/qq_44544908/article/details/126323125