当前课程知识点:高级语言程序设计 > 循环结构程序设计 > 4.6 如何提前终止循环和提前结束本次循环 > 如何提前终止循环和提前结束本次循环
同学们好
在用循环结构解决问题的时候
可能有的时候要遇到我们要提前终止循环
有的时候我们要提前结束本次的循环
这个后面我们会举例子给大家看一下
那么这两个操作该怎么样实现呢
今天这节课我们和大家一起来学习
两个控制语句
一个控制语句是break
它的作用是可以提前终止循环
第二个控制语句就是continue
它的作用是提前结束本次循环
下面我们先来看break语句
这个break语句
一般情况下在循环体里面
与这个if条件一起来使用用来终止循环
也就是说在循环体里
当这个if条件满足就跳出循环
大家可以看一下这个流程图
在循环控制这一块里
表达式1是循环条件
表达式2是if条件
当if条件满足则执行break语句
跳出循环
我们来举个例子来看一下
这个例子是这样的
要读入一批正整数
编程进行计算
并且输出
这批正整数的个数与和
那么要求我输入的这个数据为负数或零的时候
程序就立即终止
那么这个问题
要根据用户的这个输入的情况
才能知道这批正整数的个数
也就是说这个循环的次数
我们事先是不知道的
我们没有办法
根据循环的次数来跳出循环
所以只有通过这个if的条件
通过输入负数或者0
利用break语句来终止循环
那么下面我们来看一下这个程序
在这个程序里面
我们定义了几个变量
变量n是每次输入的数据
这个变量sum是求的和
变量i就是这个正整数的个数
因为初始情况下
没有1个正整数
所以i的初值为0
sum的初值也为0
接下来我们写一个while循环语句
这个while循环语句的循环条件写的是1
大家看到没有
写的是1
也就是说条件永真
也就是说如果按照这个循环条件来看
我们可以不断的执行下去
无限的循环下去
当然这肯定是不现实的
那么这个循环既然不能无限循环下去
怎么样跳出呢
我们进循环体看一下
进了循环体之后
我们要输入n的值
然后来判断这个n的值是不是正数
如果它是大于零的正数
那么它就跳过break继续计算
那么统计这个个数的值
就是变量i要做加1运算
i等于1然后再求和
好接着下一次
我们再进这个循环
循环条件还是1
那么进来之后
再一次输入变量n的值
然后再判断n是否是大于零的正数
这样不停的循环下去
那么直到某一次循环的时候
输入n的值
是小于或者等于0的数
它就满足循环里面的这个if条件
它就会执行break
一旦遇到break
循环提前终止
所以虽然循环条件写的是1永真
但是我们的循环遇到break
循环体遇到break提前终止
最后输出这个正整数的个数
也就是i的值
还有求的和也就是sum的值
好这是一个例子
下面我们再来看一个例子
我们经常会遇到
要判断一个正整数是否是素数
那么这个正整数是m
那么如果这个数是素数的话
它除了1和它本身之外
它不能被其他任何正整数整除
所以我们可以用2一直到m减1
这个范围的这些数去除m
如果m能够被2到m-1
之中的任何一个整数整除
那我们就提前结束循环
那么提前结束循环这个时候
m就可以判断它不是素数
那么这个时候要注意了
循环条件i的值小于等于m-1
如果m不能被2到m减1之间的任意一个整数整除
那么我们在完成最后一次循环之后
i的值它肯定是m
那表明m没有被
2到m减1之间任何一个整数整除过
那么这个m就是素数
好下面我们来看这样一个程序
这个程序里面
变量m和i是一个正整数
i是控制循环的变量
它从2一直到m-1
中间每执行1次循环i++
在这个循环体里面
我们用m与i做求余运算
再和0判断是否相等
如果相等它就执行break跳出循环
如果不相等它就不用执行break
一直到循环结束
那么在这个循环结束之后
我们来判断i是不是大于等于m的
这个时候我们要注意
为什么要等循环跳出判断
i是不是大于等于m呢
如果这个时候i大于等于m
那m就是素数
如果i小于m
显然m就不是素数
因为当i大于等于m的时候
那么循环跳出
也就是i是等于m的
也就是m被整除的这个数
肯定不在2到m-1这个范围
如果i小于m
也就是说这个循环它是在
i小于m的状态下跳出的
也就是m被一个2到m-1
这个范围内某一个数整除的
所以这个是判断素数的这样一个思路
接下来我们来看这个程序的运行结果
我们试着输入18
得到18它不是素数
因为输入18之后
进for循环
那么很显然18被2是可以整除的
那么18÷2取的余数和零相等
所以这个时候符合if条件
跳出break
那外面的这个i值呢
i值为2肯定是小于m的
2小于18的
所以它不是素数
好这是我们学习的这个break语句
来控制这个循环提前终止的这个例子
下面我们再来看另外一个continue语句
那么continue语句它的作用
是提前结束本次循环
也就是说遇到continue
就要跳过本次循环中剩余的语句
而强行执行下一次循环
大家可以看到这个流程图
流程图里面表达式1是循环条件
中间这个矩形块是执行的循环语句
然后再往下这个表达式2是一个if条件
continue语句是和if条件配合使用的
当表达式2为真执行continue语句
当表达式2为假就跳出continue往下执行
continue语句在循环体里面
经常与if条件一起使用
用来加速循环
下面我们来看一个例子
要读入五个正整数
并且输入这五个正整数的和
要求输入的数据为负数或零的时候
程序忽略此次输入
直到输入五个正整数的时候
程序才停止
所以这个循环的次数我们事先是知道的
一定要输入五个正整数
那么它遇到输入的负数或者零
既然要忽略此次输入
也就是说我要提前结束本次循环
也就是说这个时候我这次循环
后面的语句就不用执行了
马上进下一次循环
马上进下一次循环等着输入下一个正整数
那么输入的正整数达到五个
我们才能跳出循环
所以在提前结束本次循环进入下一次循环的时候
就需要这个continue
我们来看一下这个程序
我们定义了i n sum三个变量
i它是控制这个循环次数的
n是每次要输入的这一个数
sum是求的和
进了循环语句
进for语句之后
我们先输入n的值
然后再判断这个n是否小于等于0
如果n小于等于0
马上continue
也就循环体后面的语句不用执行了
结束本次循环
也就是说后面的循环语句
i也不用++了
sum也不用求和了
下一次进循环
我又要输入n的值
我这个时候输入的n是大于零的正数
那么它就不用continue
它跳过continue它就会怎么样
它就会做后面的i++
计算循环的次数
它就会求和
如果输入的n小于等于0的数
它就什么都不做
直接进下一次循环
所以这个就是continue的这个作用
当然这个for循环里
如果输入大于零的数满了5个
满了五个之后
也就是i的值等于5了之后
这个for循环就结束了
最后输出sum变量的值
也就是我们要求的五个正整数的和
好这是我们通过这个例子
来学习continue的这个语句
这是我们今天学习的
break和continue这两个语句的知识
那么这一节课就到这里
谢谢大家
-1.1 计算机程序和计算机语言
-1.2 C程序的构成
--C程序的构成
-1.3 C语言编辑、编译、运行(VC++2010学习版)
-练习题
-2.1 变量的定义和使用
--变量的定义和使用
-2.2 数据类型
--数据类型简介
--整型数据
--实型数据
-2.3 格式输出和格式输入
-2.4 运算符和表达式
--运算符和表达式
-2.5 结构化程序设计入门
-练习题
-3.1 为什么要用选择结构解决问题
-3.2 如何正确表示选择结构中的条件
-3.3 用if语句及if语句嵌套实现选择结构
-3.4 用switch语句实现选择结构
-练习
-4.1 循环的引入
-4.1 循环的引入--作业
-4.2 用while语句实现循环
-4.3 用do-while语句实现循环
-4.4 用for语句实现循环
-- 用for语句实现循环
-4.4 用for语句实现循环--作业
-4.5 何时需要用循环的嵌套
-4.6 如何提前终止循环和提前结束本次循环
-习题--作业
-5.1 数组类型的引入
--数组类型的引入
-5.2 一维数组的定义和初始化
-5.3 一维数组的使用
--一维数组的使用
-5.4 二维数组的定义和初始化
-5.5 二维数组的使用
--二维数组的使用
-习题--作业
-6.1 什么是指针
--什么是指针
-6.2 指针类型及相关概念
-6.3 指针变量的定义、赋值与使用
-6.4 指针的运算
--指针的运算
-6.5 指针与一维数组
--指针与一维数组
-6.6 指针的指针
--指针的指针
-6.7 指针与二维数组
--指针与二维数组
-习题--作业
-7.1 为什么要自定义函数
-7.2 函数的定义
--函数的定义
-7.3 函数的调用
--函数的调用
-7.4 函数参数的传递
--函数参数的传递
-7.5 函数的嵌套调用和递归调用
-7.6 变量的作用域和存储类型
-习题--作业
-8.1 字符串的存储及输入输出
-8.2 系统字符串处理函数
-8.3 自定义字符串处理函数
-习题--作业
-9.1 结构体类型的定义
--结构体类型的定义
-9.2 结构体变量及指针变量的定义及使用
-9.3 结构体变量和指针变量作函数的参数
-9.4 结构体数组的定义和使用
-9.5 共用体类型和枚举类型
--共用体和枚举类型
-习题--作业
-动态内存分配--习题
-习题--作业