C 语言中的 break 语句
C 语言中的 break 语句在两种不同的上下文中使用。在 switch-case 语句中,break 语句位于每个 case 块的最后一个语句中。 break 语句也可以在任何循环结构(while、dowhile 以及 for 循环)的主体中使用。
在循环内部使用时,break 会导致循环终止。在 switch-case 语句中,break 在执行完相应的 case 块后,将控制权移出 switch 作用域。
C 语言 Break 语句流程图
循环中 break 的流程图如下 -
以下流程图展示了如何在 switch-case 中使用 break -
在这两种情况下,break 都会导致控制权移出当前作用域。
While 循环中的 Break 语句
break 语句永远不会无条件使用。它始终出现在 if 语句 的 True 部分。否则,循环 将在第一次迭代过程中终止。
while(condition1){
. . .
. . .
if(condition2)
break;
. . .
. . .
}
while 循环中 break 语句的示例
以下程序检查给定数字是否为质数。质数除了自身和 1 之外,不能被任何其他数字整除。
while 循环 将除数加 1,并尝试检查它是否可整除。如果发现可整除,则终止 while 循环。
#include <stdio.h>
/*while 循环中的 break*/
int main () {
int i = 2;
int x = 121;
printf("x: %d
", x);
while (i < x/2){
if (x % i == 0)
break;
i++;
}
if (i >= x/2)
printf("%d is prime", x);
else
printf("%d is not prime", x);
return 0;
}
输出
执行此代码后,您将获得以下输出 -
x: 121 121 is not prime
现在,将"x"的值更改为 25,然后再次运行代码。它将产生以下输出 -
x: 25 25 is not prime
For 循环中的 break 语句
您也可以在 for 循环 中使用 break 语句。通常,for 循环旨在执行一定次数的迭代。但是,有时可能需要在达到特定条件时放弃循环。
在 for 循环中 break 的用法如下 -
for (init; condition; increment) {
. . .
if (condition)
break;
. . .
}
for 循环中 break 语句的示例
以下程序打印给定字符串中检测到元音字母(a、e、i 或 u)之前的字符。
#include <stdio.h>
#include <string.h>
int main () {
char string[] = "Rhythmic";
int len = strlen(string);
int i;
for (i = 0; i < len; i++){
if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || string[i] == 'o' || string[i] == 'u')
break;
printf("%c
", string[i]);
}
return 0;
}
输出
运行代码并检查其输出 −
R h y t h m
如果嵌套循环结构的内循环中出现 break,则放弃内循环并继续执行外循环体的迭代。下一次迭代时,将再次进入内循环,如果条件成立,则可能再次中断内循环。
嵌套 for 循环的 break 语句示例
以下程序使用了两个嵌套循环来获取 1 到 30 之间所有素数的列表。当发现某个数可被整除时,内循环跳出,并将 flag 设置为 1。内循环结束后,检查 flag 的值。如果为"0",则该数为素数。
#include <stdio.h>
int main(){
int i, num, n, flag;
printf("The prime numbers in between the range 1 to 30:
");
for(num = 2; num <= 30; num++){
flag = 0;
for(i = 2; i <= num/2; i++){
if(num % i == 0){
flag++;
break;
}
}
if(flag == 0)
printf("%d is prime
",num);
}
return 0;
}
输出
2 is prime 3 is prime 5 is prime 7 is prime 11 is prime 13 is prime 17 is prime 19 is prime 23 is prime 29 is prime
无限循环中的 break 语句
我们很少会故意创建无限循环。但是,在某些情况下,您可以启动一个无限循环,并在达到特定条件时中断循环。
无限循环中的 break 语句示例
以下程序使用了一个无限 for 循环。每次迭代都会生成一个 1 到 100 之间的随机数,直到得到一个可以被 5 整除的数字。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i, num;
printf ("Program to get the random number from 1 to 100:
");
srand(time(NULL));
for (; ; ){
num = rand() % 100 + 1; // 1 到 100 之间的随机数
printf (" %d
", num);
if (num%5 == 0)
break;
}
}
输出
运行此代码后,您将获得如下所示的输出 -
Program to get the random number from 1 to 100: 6 56 42 90
Switch Case 中的 Break 语句
为了将控制权转移出 switch 作用域,每个 case 块都以 break 语句结尾。如果没有 break 语句,程序将执行所有 case 块,而这并不是我们想要的。
带 switch 的 break 语句示例
在下面的代码中,一系列 if-else 语句 根据"ch"变量的值("m"、"a"或"e"分别代表上午、下午或晚上)打印三条不同的问候消息。
#include <stdio.h>
int main(){
/* 局部变量定义 */
char ch = 'm';
printf("Time code: %c
", ch);
switch(ch) {
case 'm':
printf("Good Morning
");
break;
case 'a':
printf("Good Afternoon
");
break;
case 'e':
printf("Good Evening
");
break;
default:
printf("Hello");
}
}
输出
此处,break 语句在检查第一个情况后中断程序执行。
Time code: m Good Morning
现在,注释掉 break 语句并再次运行代码。您将获得以下输出 -
Time code: m Good Morning Good Afternoon Good Evening Hello

c_loops.html