Cprogramming 简明教程
Continue Statement in C
C 中 continue 语句的行为与 break statement 有点相反。它不是强制终止循环,而是强制执行循环的下一次迭代,跳过当前迭代中的其余语句。
What is Continue Statement in C?
continue 语句用于跳过在当前迭代中循环中其余语句的执行并将其转移到下一个循环迭代。它可以与所有 C language loop constructs ( while 、 do while 和 for )一起使用。
Continue Statement Syntax
continue 语句按照以下结构使用 −
while (expr){
. . .
. . .
if (condition)
continue;
. . .
}
Continue Statement Flowchart
以下 flowchart 表示 continue 的工作原理 −
您必须在循环中使用 continue 语句。如果您在循环外部使用 continue 语句,则会导致编译错误。与 break 语句不同, continue 不与 switch-case statement 一起使用。
Continue Statement with Nested Loops
在 nested loops 的情况下, continue 将继续最近循环的下一个迭代。 continue 语句通常与 if statements 一起使用。
Continue Statement Examples
Example: Continue Statement with While Loop
在此程序中,该循环生成 variable "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
Example: Continue Statement with For Loop
以下程序过滤出 string 中的所有元音 −
#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
Example: Continue Statement with Nested Loops
如果 continue 语句出现在内部循环中,则程序控制跳转到相应循环的开头。
在以下示例中,有三个 for 循环,一个套一个。这些循环分别由变量 i 、 j 和 k 控制。如果 k 等于 i 或 j ,则最内层循环跳过 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
Example: Removing Spaces Between Words in a String
以下代码检测字符串中单词之间的空白,并将每个单词打印到不同的行上。
#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
Example: Finding Prime Factors of a Number
使用 continue 语句非常有效的情况之一,就是编写一个程序来查找 prime factors of a given number 的问题。
本程序的 algorithm 的工作原理如下 −
给定的数字依次除以从 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