=控制流(逻辑结构)========
1.逻辑结构分类
1.顺序结构(默认)
2.分支结构(判断 选择)
3.循环结构(for while)
=分支结构(if switch)====
1.if—else
(两路分支)
一般形式:
if(条件表达式)//判断条件
{
//表达式为真,条件成立,执行这个代码块
}
else
{
//表达式为假,条件不成立,执行这个代码块
}
(多路分支)
一般形式:
if(条件表达式1)//判断条件
{
//表达式1为真,条件成立,执行这个代码块
}
else if(条件表达式2)//判断条件
{
//表达式2为真,条件2成立,执行这个代码块
}
else if(条件表达式3)//判断条件
{
//表达式3为真,条件3成立,执行这个代码块
}
…
else
{
//以上表达式都为假,条件都不成立,执行这个代码块
}
补充内容:
1.两路分支,else是可以省略的 ,直接由if的判断条件控制下面代码块执行
2.花括号里面的所有代码,就是代码块
3.代码块的代码只有一行的时候,{}可以省略的(不推荐)
4.多路分支中,顺序从上往下,当其中一个条件满足时,执行该代码块的代码
然后直接结束分支
练习
从键盘输入一个字符,判断这个字符是属于 ‘a’–‘z’,‘A’–‘Z’,‘0’–‘9’,其他字符
"hello123"
2.switch —case
一般形式:
switch(变量)//选择条件
{
case 数值1:
//变量为数值1时,执行该位置的代码块、
break;//跳出分支
case 数值2:
//变量为数值2时,执行该位置的代码块、
break;//跳出分支
case 数值3:
//变量为数值3时,执行该位置的代码块、
break;//跳出分支
…
default:
//变量的值跟上面的数值都不一样,执行该处代码块
break;
}
补充内容:
1.选择的是结构执行的入口,代码就会从上往下执行
2.break作用就是提前结束整个选择结构
3.一般用于判断数值的分支结构
4.变量可以是整数,也可以是字符(字符的本质是整数 ,ASCII值)
5.case 的值可以是一个范围区间
10-15 18-58 'a'-'f'
case 10 ... 15:
case 'a' ... 'f':
练习
从键盘输入一个字符,判断这个字符是属于 ‘a’–‘z’,‘A’–‘Z’,‘0’–‘9’,其他字符
======循环结构
循环结构:
while
for
do while
goto
1.while
一般形式:
while(表达式)//循环条件
{
//当表达式为真,循环条件成立,执行循环体代码
//当表达式为假,循环条件不成立,不执行循环体代码,跳出循环
}
特殊例子 死循环
while(1)
{
//死循环,循环体代码会一直执行
}
测试带有死循环的代码时,可以使用ctrl+c 强行终止程序
练习
1.使用while输出1-50里面所有的奇数
1.如何获取1-50所有的数
2.如何输出奇数
2.要求循环输入天数,然后将该值转换为星期数和天数。
例如输入 18,则要求输出: 18 days are 2 weeks, 4days.
2.do while
一般形式:
do
{
//先斩后奏 先执行循环体代码(不管条件是否成立的,循环体都会至少执行1次),再判断循环条件是否成立
}while(表达式);//循环条件
3.for(应用场景较多)
一般形式
for(表达式1;表达式2;表达式3)//初值表达式 条件表达式 条件变化表达式
{
//循环体
}
1 2 体 3 2 体 3 2 体 3 2.。。。。。。。
特殊例子 死循环
for(;😉
{
}
等价于
while(1)
{
}
练习
1.使用for输出1-50里面所有的奇数
1.如何获取1-50所有的数
2.如何输出奇数
2.要求循环输入天数,然后将该值转换为星期数和天数。
例如输入 18,则要求输出: 18 days are 2 weeks, 4days.
4.goto
一般形式:
标签:
代码块
goto 标签;
当程序执行到goto标签时,会直接强制改变程序执行的位置到标签位置
注意:goto标签的位置可以是goto代码的上面,也可以是下面
想去哪就去哪 , goto 可以去到程序的任意位置
总结:
1.循环结构可以使用break提前跳出,结束掉整个循环
2.循环结构可以使用continue 结束当前的循环,直接进行下一次循环
3.如果循环体的代码只有一行,可以不加花括号(不推荐这样做)
4.goto语句,不要大量使用
原因:
1.造成代码的可读性降低,影响代码调试
2.强制跳转会影响内存栈的逻辑,可能会出现一些意想不到的错误
goto应用较多的场景: 硬件驱动
5.if while for 都是支持嵌套使用
if()
{
if()
{
}
}
while()
{
while()
{
}
}
for()
{
for()
{
}
}
if()
{
for()
{
}
}
for()
{
if()
{
}
}
while()
{
for()
{
}
}
提示
在嵌套循环中使用break 和 continue ,只对包含他们的并且离他们最近的循环有效
练习
使用循环嵌套打印输出9*9 乘法表
1 1 1
2 1 2 2 2
3 1 3 2 3 3 3
。。。。
9 1 9 。。。。。。。。。。。。。9 9