1 循环结构
1 三大结构回顾
我们前面讲到,我们在C++中,有三大结构,分别是:
顺序结构分支结构循环结构
三大结构特点总结请回看下面这篇文章:
顺序结构不用多说,顺序结构是最基本的结构,一个程序中必然会有顺序结构的出现。
分支结构主要有如下两类:
if系列;switch-case语句;
这两大类的主要区别可以回看下面这篇文章:
2 循环结构
循环结构有三大类:
for循环;while循环do-while循环;
前面课程中,我们讲解了for循环,今天我们要讲解的是while系列,while系列一共有两个:while循环和do-while循环。
其实不管是哪种循环结构,重要的是,从哪里开始,什么条件结束,执行过程中做哪些语句。
2 while循环
1 结构特点while语句结构如下:
while循环流程如下:
(1)首先我们执行语句1,然后判断判断条件是否成立;如果成立执行语句块和语句2。
(2)然后我们再判断判断条件是否成立;如果成立执行语句块和语句2。
(3)重复上面的步骤(2),直到判断条件不成立,退出循环。
要注意的是:
1.语句2可以写在语句块的上面,重点是先执行语句2还是执行语句块。
2.语句2不一定属于语句块是因为:语句块是执行一系列操作的,语句2是单独修改循环条件的。
最简单的示例如下:
int i = 0;
while(i<10){
cout<<"hello"<<endl;
i++;
}
2 应用
所有循环类型的,都可以使用for循环来做,也可以用while循环来做。
while在括号中,只写判断条件,判断条件的前置(语句1),写在while的前面,判断条件的修改(语句2)写在while语句中。所以一般来说,while循环常用于循环次数不固定的循环。
while语句经常用于做一个简易操作系统。根据不同的选择,执行不同的操作,当执行退出功能时,才跳出循环。
3 死循环
死循环是说,不管语句2如何改变条件,判断条件永远成立。或者没有语句2来改变条件,一旦初始条件满足判断条件,就会一直满足下去。
比如:
#include<iostream>
using namespace std;
int main(){
int i = 0;
while(1){
cout<<"hello"<<endl;
i++;
}
return 0;
}
上面这个例子就是不管i的值如何改变,判断条件是永远成立的(1代表的是true)。
下面这个例子是缺失了条件2,也会导致死循环:
#include<iostream>
using namespace std;
int main(){
int i = 0;
while(i<10){
cout<<"hello"<<endl;
}
return 0;
}
通过这个例子,我想大家应该能理解,为什么要把语句2单独从语句块中拿出来了。
3 do-while循环
1 结构特点do-while结构如下:
do-while循环流程如下:
(1)首先我们执行语句1,然后执行语句块和语句2,执行完后判断判断判断条件是否成立。
(2)如果上面的判断条件成立执行下一个语句块和语句2,执行完后再判断判断条件是否成立。
(3)重复上面的步骤(2),直到判断条件不成立,退出循环。
要注意的是:
1.和while要注意的两点一致。
2.不管条件成立不成立,语句块和语句2都要先执行一次。
3.while后面要加分号“;”。
最简单的示例如下:
int i = 0;
do{
cout<<"hello"<<endl;
}while(i<10);
2 应用
while先执行,后判断,常用于那些需要先执行操作,根据操作结果进行判断的循环语句。
例如,我们要求用户输入一个六位数的密码,如果用户输入的不是六位数,就让它一直输入下去。
#include<iostream>
using namespace std;
int main(){
int i;
do{
cout<<"请输入一个六位数的密码,如果不是六位数,就要重新输入哦:"<<endl;
cin>>i;
}while(100000>i||i>999999);
cout<<"恭喜你输入正确,你输入的密码是:"<<i<<",请检查!"<<endl;
return 0;
}
执行结果如下:
4 循环结构对比
1 for循环与while系列对比到这里,三大循环语句就讲完了,我们来总结一下他们的区别。
for循环将语句1、语句2和判断条件写在一起,也可以分开写,按照while和do-while的格式。但是一般来说,写在一起更常用。
for循环常用于循环次数一定的循环结构,比如我们明确知道,我们要执行100次,就使用for循环;
如果不明确循环次数,而是根据执行结果确定是否满足判断条件,我们一般使用while和do-while循环,比如我们根据输入的值是否合法来判断是否需要再次输入。
2 while循环与do-while循环对比
while和do-while的区别在于先执行还是先判断:
while语句是先判断,后执行。
do-while语句是先执行,后判断。
3 使用总结
经过上面的对比介绍,我们做如下总结:
如果我们在使用过程中,明确了循环的次数,使用for循环。
如果我们不确定次数,但是要先判断条件是否成立,再决定是否执行功能,使用while循环。
如果我们不确定次数,要根据我们执行的结果来判断条件是否成立,使用do-while循环。
4 习题
根据今天讲的内容,完成下面的两道习题。
1 水仙花数水仙花数满足如下要求:
(1)是一个三位数;(2)这个数 = 每一位上的数的立方和
例如:三位数 153 = 1³ + 5³ + 3³ 就是一个水仙花数。
请分别使用三类循环语句输出100-999以内的所有水仙花数。
角谷猜想:对于每一个正整数,执行如下流程:
(1)如果它是奇数,就对它乘3再加1;(2)如果它是偶数,就对它除以2;
执行到最后,结果一定为1。
例如:
6->3->10->5->16->8->4->2->1
请使用while循环或者do-while循环验证角谷猜想。