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 语句也可以在任何循环结构(whiledowhile 以及 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