C語言中的continue語句



C語言中continue語句的行為與break語句正好相反。它不會強制終止迴圈,而是強制執行迴圈的下一輪迭代,跳過當前迭代中剩餘的語句。

什麼是C語言中的continue語句?

continue語句用於跳過當前迭代中迴圈內剩餘語句的執行,並轉移到下一輪迴圈迭代。它可以與所有C語言迴圈結構whiledo whilefor)一起使用。

continue語句語法

continue語句的使用結構如下:

while (expr){
   . . .
   . . .
   if (condition)
      continue;
   . . .
}

continue語句流程圖

下面的流程圖展示了continue語句的工作方式:

switch statement in C

必須在迴圈內使用continue語句。如果在迴圈外使用continue語句,則會產生編譯錯誤。與break語句不同,continue語句不用於switch-case語句

帶巢狀迴圈的continue語句

對於巢狀迴圈continue語句將繼續執行最近迴圈的下一輪迭代。continue語句通常與if語句一起使用。

continue語句示例

示例:帶while迴圈的continue語句

在這個程式中,迴圈生成變數“i”的1到10的值。每當它是一個偶數時,下一輪迭代就開始了,跳過了printf語句。只打印奇數。

#include <stdio.h>

int main(){
   int i = 0;

   while (i < 10){
      i++;
      if(i%2 == 0)
         continue;

      printf("i: %d\n", i);

   }
}

輸出

i: 1
i: 3
i: 5
i: 7
i: 9

示例:帶for迴圈的continue語句

下面的程式過濾掉字串中的所有母音:

#include <stdio.h>
#include <string.h>

int main () {

   char string[] = "Welcome to TutorialsPoint C Tutorial";
   int len = strlen(string);
   int i;

   printf("Given string: %s\n", string);
   printf("after removing the vowels\n");

   for (i=0; i<len; i++){
      if (string[i]=='a' || string[i]=='e' || string[i] == 'i' || string[i] == 'o' || string[i] == 'u')
         continue;
      printf("%c", string[i]);
   }

   return 0;
}

輸出

執行程式碼並檢查其輸出:

Given string: Welcome to TutorialsPoint C Tutorial
after removing the vowels
Wlcm t TtrlsPnt C Ttrl

示例:帶巢狀迴圈的continue語句

如果continue語句出現在內迴圈中,程式控制將跳轉到相應迴圈的開頭。

在下面的例子中,有三個for迴圈,一個巢狀在另一個裡面。這些迴圈分別由變數ijk控制。如果k等於ij,則最內層迴圈將跳過printf語句,並轉到k的下一個值。當第二個j迴圈等於i時,執行continue。結果,顯示所有三個數字1、2和3的唯一組合。

#include <stdio.h>

int main (){

   int i, j, k;
        
   for(i = 1; i <= 3; i++){
      
      for(j = 1; j <= 3; j++){
         if (i == j)
            continue;
         
         for (k=1; k <= 3; k++){
            if (k == j || k == i)
               continue;
            
            printf("%d %d %d \n", i,j,k);

         }
      }
   }
   return 0;
}

輸出

執行程式碼並檢查其輸出:

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

示例:去除字串中單詞之間的空格

以下程式碼檢測字串中單詞之間的空格,並在不同的行上列印每個單詞。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main(){

   char string[] = "Welcome to TutorialsPoint C Tutorial";
   int len = strlen(string);
   int i;

   printf("Given string: %s\n", string);

   for (i = 0; i < len; i++){
      if (string[i] == ' '){
         printf("\n");
            continue;
      }
      printf("%c", string[i]);
   }
   return 0;
}

輸出

執行此程式碼後,您將得到以下輸出:

Given string: Welcome to TutorialsPoint C Tutorial
Welcome
to
TutorialsPoint
C
Tutorial

示例:查詢數字的質因數

continue語句證明非常有效的情況之一是編寫一個程式來查詢給定數字的質因數

這個程式的演算法是這樣的:

給定數字被連續除以從2開始的數字。如果數字可被整除,則給定數字被減少到除法結果,並且檢查結果數字是否可被2整除,直到它不再可被2整除。

如果不是2,則對從3開始的所有奇數重複此過程。當給定數字減少到1時,迴圈執行。

以下是查詢質因數的程式:

#include <stdio.h>

int main (){
   int n = 64;
   int i, m = 2;

   printf("Prime factors of %d: \n", n);

   while (n > 1){
      if (n % m == 0){
         n = n/m;
         printf("%d ", m);
         continue;
      }
      if (m == 2)
         m++;
      else
         m = m+2;
   }
   return 0;
}

輸出

這裡,給定的數字是64。因此,當您執行此程式碼時,它將產生以下輸出:

Prime factors of 64:
2 2 2 2 2 2

將數字更改為45,然後更改為90。再次執行程式碼。現在您將得到以下輸出:

Prime factors of 45:
3 3 5

Prime factors of 90:
2 3 3 5
c_loops.htm
廣告