C语言跳出循环
使用while或for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。
break关键字
在《C语言switch语句》一节中,我们讲到了break,用它来跳出 switch 语句。
当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。
使用 while 循环计算1加到100的值:
- #include <stdio.h>
- int main(){
- int i=1, sum=0;
- while(1){ //循环条件为死循环
- sum+=i;
- i++;
- if(i>100) break;
- }
- printf("%d\n", sum);
- return 0;
- }
运行结果:
5050
while 循环条件为 1,是一个死循环。当执行到第100次循环的时候,计算完i++;
后 i 的值为 101,此时 if 语句的条件 i> 100 成立,执行break;
语句,结束循环。
在多层循环中,一个 break 语句只向外跳一层。例如,输出一个4*4的整数矩阵:
- #include <stdio.h>
- int main(){
- int i=1, j;
- while(1){ // 外层循环
- j=1;
- while(1){ // 内层循环
- printf("%-4d", i*j);
- j++;
- if(j>4) break; //跳出内层循环
- }
- printf("\n");
- i++;
- if(i>4) break; // 跳出外层循环
- }
- return 0;
- }
运行结果:
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 条件语句一起使用,判断条件是否成立。
来看一个例子:
- #include <stdio.h>
- int main(){
- char c = 0;
- while(c!='\n'){ //回车键结束循环
- c=getchar();
- if(c=='4' || c=='5'){ //按下的是数字键4或5
- continue; //跳过当次循环,进入下次循环
- }
- putchar(c);
- }
- return 0;
- }
运行结果:
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语言跳出循环的更多相关文章
- C语言 break跳出循环
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- C语言scanf跳出循环的问题
注意:%C前面有个空格,如果不加空格,会跳出while循环. 第一次输入的时候,回车键会滞留在输入缓冲区,第二次要去输的时候,会直接去读回车键 在第二次要去输入的时候,可以先清除缓冲区,用getcha ...
- 【算法】C语言实现数组的动态分配
C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...
- C语言动态走迷宫
曾经用C语言做过的动态走迷宫程序,先分享代码如下: 代码如下: //头文件 #include<stdio.h> #include<windows.h>//Sleep(500)函 ...
- php语言实现的7种基本的排序方法
今天总结了一下常用的7种排序方法,并用php语言实现. 直接插入排序 /* * 直接插入排序,插入排序的思想是:当前插入位置之前的元素有序, * 若插入当前位置的元素比有序元素最后一个元素大,则什么也 ...
- 2.C语言中的关键字
1.auto 修饰局部变量,编译器默认所有局部变量都是用auto来修饰的,所以在程序中很少见到. 2.static 它作用可大了,除了可以修饰变量,还可以修饰函数,修饰变量,改变其作用域和生命周期,修 ...
- .NET 动态脚本语言Script.NET 入门指南 Quick Start
Script.NET是一种动态的脚本语言,它使得程序可扩展,可定制,和维护性好.和Office系列的VB Script相似,可以在应用中嵌入大量的代码块,以便在运行时才执行这些代码. Script.N ...
- C语言-循环结构及break、continue
循环结构 --1-- 结构循环 1.1 while循环 1.2 do…while循环 1.3 for循环 --2-- break和continue 2.1 break关键字 2.2 continue关 ...
- C语言的关键字,运算符,标识符
关键字 数据类型修饰相关 auto按照自动的方式进行变量的存储 const定义常量或常参数 extern声明外部变量或函数 register指定变量的存储类型是寄存器变量 static指定变量的存储类 ...
随机推荐
- 列举一些常见的系统系能瓶颈 Common Bottlenecks
http://www.nowamagic.net/librarys/veda/detail/2408在 Zen And The Art Of Scaling - A Koan And Epigram ...
- js 将网页生成为html保存访问
2012-04-03 今天实现了一个需求,主题是将浏览中的网页生成html保存起来,记录访问url,挂在公司网站上做案例. 首先忙活了N久的是去搜索生成html的js函数. 什么IE自带的 ...
- 区别getElementByID,getElementsByName,getElementsByTagName
以人来举例说明,人有能标识身份的身份证,有姓名,有类别(大人.小孩.老人)等. 1. ID 是一个人的身份证号码,是唯一的.所以通过getElementById获取的是指定的一个人. 2. Name ...
- 大数据量下MySQL插入方法的性能比较
不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入.插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方 ...
- 交叉编译Node.js到OpenWrt(HG255D)
操作系统:deepin linux 2013 或 ubuntu 13.04 1.安装交叉编译前.须要安装的包 sudo apt-get install build-essential subversi ...
- Quartus调用Modelsim SE避免重复编译Altera器件库的方法
最近用Quartus 15.0配合Modelsim SE 10.4的64位版本,简直就是闪电一般的仿真速度.但是众所周知,SE版本最大的问题就是每次由Quartus自动调用时,都要重新编译所使用的器件 ...
- Windows下ADB默认的5037port被占用,解决方式。
Windows下可能会因为系统版本号不一样的原因导致有的系统5037port被系统进程占用.导致ADB无法使用5037port,从而导致ADB不能打开.在eclipse上跑Android程序的时候显示 ...
- python内置函数之print()
定义:将值打印到一个流对象,或者默认打印到sys.stdout. 语法: print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=Fal ...
- pc或者微信上用pdf.js在线预览pdf和word
最近项目要求pdf和word可以在线预览功能,pc端还好解决,但是微信端就有点坑了,pc端原来的思路是将文件转成base64,然后用html格式显示 ,但是微信端不支持, 这种方式就pass掉了,谷歌 ...
- 回文串dp
一个字符串如果从左往右读和从右往左读都一样,那么这个字符串是一个回文串.例如:"abcba","abccba". 蒜头君想通过添加字符把一个非回文字符串变成回文 ...