选择结构
什么是选择结构
选择结构就是根据不同的条件,进入不同的分支(即执行不同的代码)
if-else选择节构
语法
if(表达式1)
{
语句块1
}
else if(表达式2)
{
语句块2
}
···
if(表达式n-1)
{
语句块n-1
}
else if(表达式n)
{
语句块n
}
graph TD
A(开始) --> B{表达式1}
B-->|ture|C[语句块1]
C-->J(结束)
B-->|false|D{表达式2}
D-->|true|E[语句块2]
E-->J
D-->|false|F[...表达式n-1]
F-->|true|G{语句块n-1}
G-->J
F-->|false|H{表达式n}
H-->|true|I[语句块n]
I-->J
H-->|false|J
注意
1.if-else里的分支数可以是任意个
2.if后面的表达式一定要用“()”括起来
3.语句块一定要用“{}”括起来
4.if-else是可以嵌套的,if里面和else里面都可以有
switch选择节构
语法
switch(可枚举的表达式)
{
case 常量1:
语句块
break;
case 常量2:
语句块
break;
···
case 常量n:
语句块
break;
default:语句块
}
graph TD
A(开始) --> B{可枚举的表达式等于}
B-->|常量1|C[语句块]
C-->a(结束)
B-->|常量2|D[语句块]
D-->a
B-->|...常量n|E[语句块]
E-->a
B-->|都不等于|F[语句块]
F-->a
注意
1.switch可以没有default块
2.switch中case没有break就会继续执行,直到遇到break或switch结束
循环结构
什么是循环结构
循环结构就是如果一个条件成立则执行一段代码,否则跳出
for循环结构
语法
for(表达式1;表达式2;表达式3)
{
语句块
}
graph TD
A(开始)--> B[计算表达式1]
B-->C[表达式2]
C-->|true|D[语句组]
D-->E[计算表达式3]
E-->C
C-->|false|F(结束)
注意
for循环的表达式可以不写,但有可能会死循环,一定要及时按下ctrl+C终止程序,否则系统资源会被耗尽
for循环可以用break终止(只能跳出一层)
while循环结构
语法
while(表达式)
{
语句组
}
graph TD
A(开始)--> B[表达式]
B-->|true|C[语句组]
C-->B
B-->|false|F(结束)
注意
while循环的表达式可以换成true,但是会死循环,一定要及时按下ctrl+C终止程序,否则系统资源会被耗尽
while循环可以用break终止(只能跳出一层)
当循环变量要加1时,最好选择前置++
do-while
语法
do
{
语句组
}
while(表达式)
graph TD
A(开始)--> B[语句组]
B-->C[表达式]
C-->|false|B
C-->|true|D(结束)
注意
do-while如果想跟while一样的效果,需要吧while的条件反过来
死循环
什么是死循环
如果循环的条件一直成立,就会出现死循环
死循环的危害
死循环如果不及时终止的话(按下ctrl+C或者在循环里加break),会导致系统资源耗尽,导致其他程序无法运行
break
break可以出现在任何一个循环里(for、while、do-while),它的作用是跳出循环(只能跳出一层)
continue
continue可以出现在任何一个循环里(for、while、do-while),它的作用是跳过本次循环(只能作用于一层)
goto
goto可以出现在任何地方,它的作用是无条件到某一个“句子标号”,句子标号的命名规则与变量相同
一般来说,goto会让代码可读性变差,所以尽量不要使用goto
小结
1.值可以枚举的表达式,都可以作为switch里面的条件表达式
2.分支很多的情况下,尽量使用switch
3.for循环里,如果循环变量需要加1,最好使用前置++
4.do-while循环能保证循环至少执行一次
5.使用循环时,要避免出现死循环
6.break可以跳出一层循环,continue可以跳过本次循环,goto要尽量少用