在程序当中除了分支结构之外,还有循环结构
1 while循环
首先介绍while循环
while(表达式){
语句块
}
关键字 while 后面小括号当中的表达式成立,就会重复执行后面的语句块的内容,如果条件不成立就会结束循环
#include
这个程序会一直在控制台打印 hello,因为循环的判断始终都是 1 ,所以会一直执行,如果想要结束程序,只能强制结束控制台进程(也可以按 ctrl+c)
为了能让循环能够自然的结束,就需要循环控制表达式能有有一个由成立向不成立的变化
#include
这里表达式 i<10 本来是成立的,但是每次循环 i 的值都会自增1,第1次循环i的值是 0 然后自增;
第二次循环 i 的值是1,再自增,一直到第11次循环i的值变为10,已经不满足循环继续的条件,所以循环一共执行了10次
![2c1c0da19197742dcfc2ef52fe34813c.png](https://img-blog.csdnimg.cn/img_convert/2c1c0da19197742dcfc2ef52fe34813c.png)
while循环可以使用流程图来表示
![64052bf233b6cb563b35f58ddfb88ef1.png](https://img-blog.csdnimg.cn/img_convert/64052bf233b6cb563b35f58ddfb88ef1.png)
循环也可以不仅仅是简单的重复,也可以处理一些有规律的变化过程
加入我们需要计算一下 1~100 区间内所有数字之和
#include
这个算法非常简单,就是把一个自动增长的变量,加到 sum 当中,第一次循环把1加到sum当中,第二次循环把2加到sum中,一直到第100次循环,把100加到sum中,当循环结束,sum就是1~100的和
![02422e33051e237520437716da98378b.png](https://img-blog.csdnimg.cn/img_convert/02422e33051e237520437716da98378b.png)
这里需要注意的是控制循环的次数,开始条件 i =1,和结束条件i<=100,表示第一次循环和最后一次循环 i 的取值范围
我们也可以使用 break 关键字来控制循环提前结束
#include
正常输出的结果是
![452a737554e88a7e4e14186a6228aa25.png](https://img-blog.csdnimg.cn/img_convert/452a737554e88a7e4e14186a6228aa25.png)
现在我们需要在第5次循环的时候提前结束
#include
![983915641db47c7a3ce5ad7e96871829.png](https://img-blog.csdnimg.cn/img_convert/983915641db47c7a3ce5ad7e96871829.png)
在循环当中,执行到了break关键字,就会跳出当前的循环
还可以使用continue关键字来跳过当次循环
#include
![86a847c683a6b2620a5a388969c922b5.png](https://img-blog.csdnimg.cn/img_convert/86a847c683a6b2620a5a388969c922b5.png)
这里把 i++ 提前了,因为如果把i++放到 continue的后面,那么第五次循环 i的值是5,执行到continue跳过了i++,下一次判断 i 的值还是5,进入到了一个死循环
2 do...while循环
do...while循环可以认为是while循环的一个变型,它会先执行语句然后再判断是否继续循环
do{
语句块
}while(表达式);
注意while后面要加上一个 分号;
流程图
![e21da2ff829c37d189a95652553e2999.png](https://img-blog.csdnimg.cn/img_convert/e21da2ff829c37d189a95652553e2999.png)
刚才的程序可以使用do...while来改写
#include
先计算第一次的值,然后重复这个过程
while循环我们也可以称之为当循环,do...while循环我们可以称之为直到循环,两者的区别就在于,假如循环第一次判断的条件就不成立,那么while循环什么都不会做,而do...while循环会至少执行一次
#include
![206c30f0073b398e136217d0ef1c2723.png](https://img-blog.csdnimg.cn/img_convert/206c30f0073b398e136217d0ef1c2723.png)
while循环一次都没有执行
#include
![b5e86302c92feedff6e50c2f874e4e2b.png](https://img-blog.csdnimg.cn/img_convert/b5e86302c92feedff6e50c2f874e4e2b.png)
do...while循环执行了一次
我们也可以使用while循环来实现和do...while循环相同的效果
#include
只要在循环开始之前先执行一次就可以了
![a87d7996e26c903ed9b1edb8ed2a51d8.png](https://img-blog.csdnimg.cn/img_convert/a87d7996e26c903ed9b1edb8ed2a51d8.png)