C# 循環語句:while,for,foreach,do while,break,continue,嵌套循環,無限循環(學習心得 10)

滿足一定條件下,多次執行同一塊代碼。

一、循環類型

1.1 while 循環

語法:

while(condition)
{
   statement(s);
}

condition 可以是任意的表達式,當為任意非零值時都為真。

例:

using System;

namespace Loops
{
   
    class Program
    {
        static void Main(string[] args)
        {
            /* 局部變量定義 */
            int a = 10;

            /* while 循環執行 */
            while (a < 12)
            {
                Console.WriteLine("a 的值: {0}", a);
                a++;
            }
            Console.ReadLine();
        }
    }
}

運行結果:

a 的值: 10
a 的值: 11

1.2 for/foreach 循環

語法:

for ( init; condition; increment )
{
   statement(s);
}

例:

using System;

namespace Loops
{
   
    class Program
    {
        static void Main(string[] args)
        {
            /* for 循環執行 */
            for (int a = 10; a < 12; a = a + 1)
            {
                Console.WriteLine("a 的值: {0}", a);
            }
            Console.ReadLine();
        }
    }
}

運行結果:

a 的值: 10
a 的值: 11

foreach 循環:迭代數組/集合對象。

例:

namespace ForEachTest
{
    class ForEachTest
    {
        static void Main(string[] args)
        {
            int[] fibarray = new int[] { 0, 1, 1, 2, 3 };
            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);
        }
    }
}

運行結果:

0
1
1
2
3

0
1
1
2
3

Element #1: 0
Element #2: 1
Element #3: 1
Element #4: 2
Element #5: 3
Number of elements in the array: 5

1.3 do while 循環

為尾部進行條件檢查。

確保循環至少執行一次。

語法:

do
{
   statement(s);

}while( condition );

例:

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 < 13);

            Console.ReadLine();
        }
    }
}

運行結果:

a 的值: 10
a 的值: 11
a 的值: 12

1.4 嵌套循環

嵌套 for 循環語法:

for ( init; condition; increment )
{
   for ( init; condition; increment )
   {
      statement(s);
   }
   statement(s);
}

嵌套 while 循環語法:

while(condition)
{
   while(condition)
   {
      statement(s);
   }
   statement(s);
}

嵌套 do while 循環語法:

do
{
   statement(s);
   do
   {
      statement(s);
   }while( condition );

}while( condition );

例:尋找 2~100 中的質數。

質數又稱素數。

一個大於 1 的自然數,除了 1 和它自身外,不能被其他自然數整除的數叫做質數。

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++)
                    if ((i % j) == 0) break; // 如果找到,則不是質數
                if (j >= i )
                    Console.WriteLine("{0} 是質數", i);
            }

            Console.ReadLine();
        }
    }
}

運行結果:

2 是質數
3 是質數
5 是質數
7 是質數
11 是質數
13 是質數
17 是質數
19 是質數
23 是質數
29 是質數
31 是質數
37 是質數
41 是質數
43 是質數
47 是質數
53 是質數
59 是質數
61 是質數
67 是質數
71 是質數
73 是質數
79 是質數
83 是質數
89 是質數
97 是質數

二、循環控制語句

2.1 break

兩種用法:

  • 循環體內 break,循環終止。
  • switch 中 break,終止一個 case。
  • 如果是循環嵌套,break 停止最內層循環。

2.2 continue

用法:

  • 跳出當前循環,進入下一次循環。
  • for 循環,跳到執行條件測試和循環增量。
  • while 和 do while 循環,跳到條件測試。

例:

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();
        }
    }
}

運行結果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

可見其中跳過了一次 a=15 的迭代。

三、無限循環

條件永遠為真,則無限循環。

例:

using System;

namespace Loops
{
   
    class Program
    {
        static void Main(string[] args)
        {
            for (; ; )
            {
                Console.WriteLine("Hey! I am Trapped");
            }
 
        }
    }
}

或者用 while 也行:

using System;

namespace LoopsInfi
{
    class Program
    {
        static void Main(string[] args)
        {
            while(true)
            {
                Console.WriteLine("Hey! I am Trapped");
            }

        }
    }
}

Tags: