C 语言编程教程

C 语言首页

C 语言基础

C 语言概述 C 语言特性 C 语言发展历史 C 语言下载安装和环境配置 C 语言程序结构 C 语言 Hello World C 编译过程 C 注释 C 标记 C 关键字 C 标识符 C 用户输入 C 基本语法 C 数据类型 C 变量 C 整数提升 C 类型转换 C 类型转换 C 布尔值

C 语言中的常量和文字

C 常量 C 字面量 C 转义序列 C 格式说明符

C 语言中的运算符

C 运算符 C 算术运算符 C 关系运算符 C 逻辑运算符 C 位运算符 C 赋值运算符 C 一元运算符 C 递增和递减运算符 C 三元运算符 C sizeof 运算符 C 运算符优先级 C 其他运算符

C 语言中的决策

C 决策 C if 语句 C if...else 语句 C 嵌套 if 语句 C switch 语句 C 嵌套 switch 语句

C 语言中的循环

C 循环 C While 循环 C For 循环 C Do...while 循环 C 嵌套循环 C 无限循环 C Break 语句 C Continue 语句 C goto 语句

C 语言中的函数

C 函数 C Main 函数 C 按值调用函数 C 按引用调用函数 C 嵌套函数 C 可变参数函数 C 用户定义函数 C 回调函数 C return 语句 C 递归

C 语言中的作用域规则

C 作用域规则 C 静态变量 C 全局变量

C 语言中的数组

C 数组 C 数组的属性 C 多维数组 C 将数组传递给函数 C 从函数返回数组 C 可变长度数组

C 语言中的指针

C 指针 C 指针和数组 C 指针的应用 C 指针运算 C 指针数组 C 指向指针的指针 C 将指针传递给函数 C 从函数返回指针 C 函数指针 C 指向数组的指针 C 指向结构体的指针 C 指针链 C 指针 vs 数组 C 字符指针和函数 C NULL 指针 C void 指针 C 悬垂指针 C 解引用指针 C Near、Far 和 Huge 指针 C 指针数组的初始化 C 指针与多维数组

C 语言中的字符串

C 字符串 C 字符串数组 C 特殊字符

C 语言的结构体和联合

C 结构体 C 结构体和函数 C 结构体数组 C 自引用结构 C 查找表 C 点 (.) 运算符 C 枚举(或 enum) C 结构填充和打包 C 嵌套结构 C 匿名结构和联合 C 联合 C Bit 位字段 C Typedef

C 语言中的文件处理

C 输入和输出 C 文件 I/O(文件处理)

C 语言中的预处理器

C 预处理器 C #pragma 编译指示 C 预处理器操作符 C 宏 C 头文件

C 语言中的内存管理

C 内存管理 C 内存地址 C 存储类

C 其他主题

C 错误处理 C 可变参数 C 命令执行 C 数学函数 C static 静态关键字 C 随机数生成 C 命令行参数

C 语言编程资源

C 语言问题与解答答案 C 语言快速指南 C 语言速查表 C 语言实用资源 C 语言讨论


C 语言中的 break 语句

C 语言中的 break 语句在两种不同的上下文中使用。在 switch-case 语句中,break 语句位于每个 case 块的最后一个语句中。 break 语句也可以在任何循环结构(while、dowhile 以及 for 循环)的主体中使用。

在循环内部使用时,break 会导致循环终止。在 switch-case 语句中,break 在执行完相应的 case 块后,将控制权移出 switch 作用域。

C 语言 Break 语句流程图

循环中 break 的流程图如下 -

C 语言 Break 语句

以下流程图展示了如何在 switch-case 中使用 break -

C 语言 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