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
广告