使用while或for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。

break关键字

在《C语言switch语句》一节中,我们讲到了break,用它来跳出 switch 语句。

当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。

使用 while 循环计算1加到100的值:

  1. #include <stdio.h>
  2. int main(){
  3. int i=1, sum=0;
  4. while(1){ //循环条件为死循环
  5. sum+=i;
  6. i++;
  7. if(i>100) break;
  8. }
  9. printf("%d\n", sum);
  10. return 0;
  11. }

运行结果:
5050

while 循环条件为 1,是一个死循环。当执行到第100次循环的时候,计算完i++;后 i 的值为 101,此时 if 语句的条件 i> 100 成立,执行break;语句,结束循环。

在多层循环中,一个 break 语句只向外跳一层。例如,输出一个4*4的整数矩阵:

  1. #include <stdio.h>
  2. int main(){
  3. int i=1, j;
  4. while(1){ // 外层循环
  5. j=1;
  6. while(1){ // 内层循环
  7. printf("%-4d", i*j);
  8. j++;
  9. if(j>4) break; //跳出内层循环
  10. }
  11. printf("\n");
  12. i++;
  13. if(i>4) break; // 跳出外层循环
  14. }
  15. return 0;
  16. }

运行结果:

1   2   3   4
2 4 6 8
3 6 9 12
4 8 12 16

当 j>4 成立时,执行break;,跳出内层循环;外层循环依然执行,直到 i>4 成立,跳出外层循环。内层循环共执行了4次,外层循环共执行了1次。

continue语句

continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。

来看一个例子:

  1. #include <stdio.h>
  2. int main(){
  3. char c = 0;
  4. while(c!='\n'){ //回车键结束循环
  5. c=getchar();
  6. if(c=='4' || c=='5'){ //按下的是数字键4或5
  7. continue; //跳过当次循环,进入下次循环
  8. }
  9. putchar(c);
  10. }
  11. return 0;
  12. }

运行结果:
0123456789↙
01236789

程序遇到while时,变量c的值为'\0',循环条件c!='\n'成立,开始第一次循环。getchar() 使程序暂停执行,等待用户输入,直到用户按下回车键才开始读取字符。

本例我们输入的是 0123456789,当读取到4或5时,if 的条件c=='4'||c=='5'成立,就执行 continue 语句,结束当前循环,直接进入下一次循环,也就是说putchar(c);不会被执行到。而读取到其他数字时,if 的条件不成立,continue 语句不会被执行到,putchar(c);就会输出读取到的字符。

break与continue的对比:break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

C语言跳出循环的更多相关文章

  1. C语言 break跳出循环

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  2. C语言scanf跳出循环的问题

    注意:%C前面有个空格,如果不加空格,会跳出while循环. 第一次输入的时候,回车键会滞留在输入缓冲区,第二次要去输的时候,会直接去读回车键 在第二次要去输入的时候,可以先清除缓冲区,用getcha ...

  3. 【算法】C语言实现数组的动态分配

    C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...

  4. C语言动态走迷宫

    曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...

  5. php语言实现的7种基本的排序方法

    今天总结了一下常用的7种排序方法,并用php语言实现. 直接插入排序 /* * 直接插入排序,插入排序的思想是:当前插入位置之前的元素有序, * 若插入当前位置的元素比有序元素最后一个元素大,则什么也 ...

  6. 2.C语言中的关键字

    1.auto 修饰局部变量,编译器默认所有局部变量都是用auto来修饰的,所以在程序中很少见到. 2.static 它作用可大了,除了可以修饰变量,还可以修饰函数,修饰变量,改变其作用域和生命周期,修 ...

  7. .NET 动态脚本语言Script.NET 入门指南 Quick Start

    Script.NET是一种动态的脚本语言,它使得程序可扩展,可定制,和维护性好.和Office系列的VB Script相似,可以在应用中嵌入大量的代码块,以便在运行时才执行这些代码. Script.N ...

  8. C语言-循环结构及break、continue

    循环结构 --1-- 结构循环 1.1 while循环 1.2 do…while循环 1.3 for循环 --2-- break和continue 2.1 break关键字 2.2 continue关 ...

  9. C语言的关键字,运算符,标识符

    关键字 数据类型修饰相关 auto按照自动的方式进行变量的存储 const定义常量或常参数 extern声明外部变量或函数 register指定变量的存储类型是寄存器变量 static指定变量的存储类 ...

随机推荐

  1. HTML5学习笔记 拖放

    拖放(Drag和drop)是html5标准的组成部分 拖放是一种常见的特性,即抓取对象以后拖到另一个位置 在html5中,拖放是标准一部分,任何元素都能够拖放. 设置元素为可拖放 首先,为了使元素可拖 ...

  2. iOS8的一些控件的变更

    UISearchDisplayController变更为UISearchController UIAlertView变更为UIAlertController 如果添加点击事件则需要使用UIAlertC ...

  3. laravel模型中打印sql语句

    模型中有个 ->toSql() 可以打印sql语句

  4. unity, editorWindow update计时

    对于editorWindow,Time.deltaTime不起作用,所以需用下面方法对update进行计时: public class myEditorWindow : EditorWindow{ p ...

  5. Spring mvc注解方式使用事务回滚

    项目名:1ma1ma jdbc.xml <bean  id="dataSource" class="org.apache.commons.dbcp.BasicDat ...

  6. [Jobdu] 题目1455:珍惜现在,感恩生活

    题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...

  7. 关于release后retainCount还是1的问题

    转自:http://www.cocoachina.com/bbs/read.php?tid=175523 realse之后再调用还能调用的的问题,我做了这么多年也是经常遇到,也曾经试图寻找原因, 就像 ...

  8. Python3中使用HTMLTestRunner报No module named 'StringIO'解决方法

    今天在学习使用HTMLTestRunner生成测试报告时遇到一个报错,如图所示: 网上搜索了下“No module named 'StringIO'”解决方法,原来我用的是Python 3.X版本,而 ...

  9. struts2拦截器的实现原理及源码剖析

    拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理.同时,拦截器也可以让你将通用的 ...

  10. php7性能、兼容性和稳定性探讨

    前几天看到php7发布了beta1版本,想了解一下php7到底折腾了些啥东西出来.这一了解发现不得了了,改变还挺多的.最最重要的方面就是性能提升了不少,这边有一个pdf文件是惠新宸(鸟哥,php核心开 ...