前面学习完了顺序和分支结构,我们接下来进入循环结构for、while、do-while的学习吧。
目录
01-循环结构的概念
什么是循环?一样的事情重复去做,就是循环。例如:上体育课跑十圈,从第一圈开始跑步,中途都在重复进行跑步运动,跑到第十圈跑完就结束跑步。在这里面从第一圈到第十圈即为循环改变的变量;而在每一次循环中,我们进行跑步运动不变,即为我们的循环体重复执行的事情。
02-for循环结构
for循环结构,应用于需要循环变量有规律变化的场合。
for循环结构:
for ( 循环变量初值 ; 循环终止条件 ; 每次循环变量增加/减少的值 ) {
循环体程序1 ;
循环体程序2 ;
...}
//例如:实现输出1,2,3,...,8,9,10数值
for(int i=1;i<=10;i++){
cout << i << endl;
}
循环变量初值:int i=1,表示循环变量i第一次循环为1
循环终止条件:i<=10,表示循环变量i小于等于10均执行循环体程序
每次循环变量增加/减少的值:i++,表示每一次循环体程序执行后,循环变量累加1
03-while循环结构
while循环结构,应用于满足条件即执行循环体程序的场合。
while循环结构:
while ( 执行循环条件 ){
循环体程序1 ;
循环体程序2 ;
...
}
//例如:a=5,b=3,当a>=b时a=a-b,b=b-a+1,输出a,b的值
int a=5,b=3;
while(a>=b){
a = a-b;
b = b-a+1;
}
cout << a << " " << b << endl;
执行循环条件:a>=b,表示while循环中,当a大于等于b时,就执行循环体程序
04-do-while循环结构
do-while循环结构:应用于先执行循环体程序在进行循环条件判断,do-while和while的区别,前者至少执行一场循环体程序,后者则有可能一次都不执行。
do-while循环结构:
do{
循环体程序1 ;
循环体程序2 ;
...
}while(执行循环条件);
//猜数游戏,输入一个0~9的数,让别人来进行猜数,当数值相同时则结束猜数
#include<iostream>
using namespace std;
int main(){
int cs,x;
cin >> cs;
do{
cin >> x;
if( x!= cs && x > cs){
cout << "所猜的数值太大了,可以猜小一点。" << endl;
}
if( x != cs && x < cs){
cout << "所猜的数值太小了,可以猜大一点。" << endl;
}
}while( x!=cs );
cout << "恭喜你,获得本次猜数比赛冠军。" << endl;
return 0;
}
程序先执行一遍循环体程序,在进行循环条件判断:x!=cs,当x的值不等于cs时,即执行循环体程序,注意在循环条件后需要加分号
05-循环嵌套的使用
在循环结构中,在多次增加循环结构,三个循环结构for、while、do-while均可互相嵌套。
如上图,我们在for循环结构中,涵盖了:while循环和do-while循环,在while循环中又有for循环。
循环嵌套:和套娃类似,可以一层一层根据题目意思多次添加,但是添加的越多,时间复杂度越大,推荐可以用函数递归的方式减少时间复杂度的计算。
06-结束循环break和结束本次循环continue
结束循环 break :在执行循环程序时,当满足题意而循环还没执行完全时,可以用 break 结束循环体程序,执行下方程序,以此来减少时间复杂度,节约资源。
#include<iostream>
using namespace std;
int main(){
//我正常吃5个包子,今天肚子有点不舒服只能吃3个
int bz;
for(int bz=1;bz<=5;bz++){
cout << "今天已经吃了" << bz << "个包子。" <<endl;
if ( bz==3 ){
break; //bz等于3时,结束循环
}
}
return 0;
}
结束本次循环 continue :在执行循环程序时,若中途满足条件,可以用 continue 结束本次循环体程序,继续下一轮循环。
#include<iostream>
using namespace std;
int main(){
//我正常吃5个包子,今天肚子有点不舒服只能吃3个,吃的过程中有一个包子掉地上不能吃了
int bz=1,pd;
while( bz<=5 ){
cout << "请输入包子是否掉地上,0为否,1为是:" <<endl;
cin >> pd;
if( pd == 1 ){
continue; //判断包子有没有掉地上,若pd为1则掉地上不能吃
}
cout << "包子没掉地上,可以吃,今天已经吃了" << bz <<"个包子。"<<endl;
if( bz==3 ){
break; //吃到三个包子就饱了,不继续吃了。
}
bz++;
}
return 0;
}
循环结构我们暂时就学习到这,接下来我们开始做题练习熟悉循环结构的使用吧。