使用while或for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue。
break :跳出循环continue :跳过循环这一轮剩下的语句进入下一轮循环 break
当 break 用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 通常和 if 语句一起使用,即满足条件时便跳出循环。
使用 for 循环判断一个数是不是素数:
#include
以上程序中当 isPrime = 0 则执行 break 语句,直接跳出 for 循环,进入下一条语句;不管是while、do…while,for,只要遇到 break 就会跳出循环进入下一条语句。
continue 语句continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。
使用 for 循环判断一个数是不是素数:
#include
当 isPrime = 0 则执行 continue 语句;结束此轮循环,进入下一轮 for 循环,不会执行下一条语句 :printf("%dn",i); 如果 isPrime != 0 则不会执行 continue 语句,直接执行下一条语句:printf("%dn",i);
break vs continue
当判断条件为 True 则进入循环体, 在循环体内遇到 break 则跳出整个循环,如果遇到 continue 则跳过循环这一轮剩下的语句进入下一轮循环。
循环里面还是循环
一般来说每一层循环用的控制变量应该是不一样的。
用 for 循环找出100以内的素数:
#include
第一层循环中的控制变量是 x ;第二层循环中的控制变量是 i 。
如何离开多重循环
break 和 continue
只能对他所在的那层循环做
例如:用 1角,2角,5角的硬币凑出2元的面额:
#include
输出结果为:
此程序输出了所有用 1角,2角,5角的硬币凑出2元的面额的情况。
如果我只需要一种情况,只要每一个循环得到一个结果就跳出循环,就能输出一种结果,那么我需要在每一层循环都加 break 才能跳出多重循环,并且还需要加一个控制变量:
#include
输出结果为:
可以用1个1角加2个2角加3个5角得到2元
这是一种常用的方法叫做 接力break
如果我只需要一种情况,还有另外一种方法 goto 语句,可以直接在需要跳出循环的地方使用 goto 语句就能跳出多重循环。
#include
输出结果为
可以用1个1角加2个2角加3个5角得到2元
注意
goto 语句 对其他情况不友好,弹在这种多重循环嵌套循环的内层跳到最外面去是非常适合的。其他环境不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。