1. 程式人生 > >c 基礎教程六:c 迴圈結構

c 基礎教程六:c 迴圈結構

有的時候,我們可能需要多次執行同一塊程式碼,c 語言提供瞭如下幾種迴圈,各有特色。

  • while 迴圈
  • for 迴圈
  • do-while 迴圈

while 迴圈


只要給定的條件為真,C 語言中的 while 迴圈語句會重複執行一個目標語句。

C 語言中 while 迴圈的語法:

while(condition) {
   statement(s);
}

statement(s) 可以是一個單獨的語句,也可以是幾個語句組成的程式碼塊。

condition 可以是任意的表示式,當為任意非零值時都為 true。當條件為 true 時執行迴圈,當條件為 false 時,退出迴圈,程式流將繼續執行迴圈下面的語句。

例項:

#include <stdio.h>

int main ()
{
   /* 區域性變數定義 */
   int a = 10;

   /* while 迴圈執行 */
   while( a < 20 ) {
      printf("a 的值: %d\n", a);
      a++;
   }

   return 0;
}

結果:

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

for 迴圈


for 迴圈允許您編寫一個執行指定次數的迴圈控制結構。

C 語言中 for 迴圈的語法:

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

解釋:

  • init:會首先被執行,且只會執行一次。這一步允許您宣告並初始化任何迴圈控制變數。您也可以不在這裡寫任何語句,只要有一個分號出現即可。
  • condition:如果為真,則執行迴圈主體。如果為假,則不執行迴圈主體,且控制流會跳轉到 for 迴圈後面的語句。
  • increment:在執行完 for 迴圈主體後,控制流會跳回上面的 increment 語句,更新迴圈控制變數,可以為空。
  • 從第二次迴圈起,條件會再次被判斷。如果為真,則執行迴圈,這個過程會不斷重複。在條件變為假時,for 迴圈終止。

例項:

#include <stdio.h>
 
int main ()
{

   for(int i = 10; i < 20; i++) {
      printf("a 的值: %d\n", a);
   }

   return 0;
}

結果:

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

do-while 迴圈


不像 for 和 while 迴圈,它們是在迴圈頭部測試迴圈條件。在 C 語言中,do...while 迴圈是在迴圈的尾部檢查它的條件。

do...while 迴圈與 while 迴圈類似,但是 do...while 迴圈會確保至少執行一次迴圈。

C 語言中 do...while 迴圈的語法:

do
{
   statement(s);

} while (condition);

條件表示式出現在迴圈的尾部,所以迴圈中的 statement(s) 會在條件被測試之前至少執行一次。

如果條件為真,控制流會跳轉回上面的 do,然後重新執行迴圈中的 statement(s)。這個過程會不斷重複,直到給定條件變為假為止。

例項:

#include <stdio.h>
 
int main ()
{
   /* 區域性變數定義 */
   int a = 10;

   /* do 迴圈執行 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}

結果:

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

迴圈控制語句


break

c 語言中 break 語句有以下兩種用法:

  • 當 break 語句出現在一個迴圈內時,迴圈會立即終止,且程式流將繼續執行迴圈後面的語句。
  • 它可用於終止 switch 語句中的一個 case。

如果您使用的是巢狀迴圈(即一個迴圈內巢狀另一個迴圈),break 語句會停止執行最內層的迴圈,不會終止外層迴圈。

例項:

#include <stdio.h>
 
int main ()
{

   int a = 10;

   /* while 迴圈 */
   while( a < 20 )
   {
      printf("a 的值: %d\n", a);
      a++;
      if( a > 15)
      {
          break;
      }
   }

   return 0;
}

結果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15

continue

c 語言中的 continue 語句有點像 break 語句。但它不是強制終止,continue 會跳過當前迴圈中的程式碼,開始下一次迴圈。

換句話就是:跳過本次迴圈,執行下一次迴圈

例項:

#include <stdio.h>

int main ()
{

   int a = 10;

   do {
      if( a == 15) {
         a = a + 1;
         continue;//結束本次迴圈
      }
      printf("a 的值: %d\n", a);
      a++;
   } while (a < 20);

   return 0;
}

結果:

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