分支与循环语句


C语言语句可分为以下五类:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句

我们这里介绍的是控制语句

C语言是一种结构化的程序设计语言,生活中的事物常见的结构有顺序,选择,循环结构,C语言的控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句,可以分为以下三类:
1、条件判断语句也叫分支语句:if语句、switch语句;
2、循环执行语句:do while语句、while语句、for语句;
3、转向语句:break语句、goto语句、continue语句、return语句。

 

 

分支语句(选择语句)

  1. if语句

if语句的语法结构有以下几种
 
if(表达式)                    如果表达式为真则执行语句。       注意C语言中0为假,非0为真。
语句1;

 

if (表达式1)
语句1;
else
语句2;

 

也可以是多分支的
if(表达式1)
语句1;
else if(表达式2)
语句2;
…(中间可以有多个else if)
else 
语句3;

 


如果一个条件下有多条语句,要用大括号括起来,因为if和else默认只能控制一条语句。大括号括起来的可以称为一个代码块
if(表达式)
{
语句1;
语句2;…
}

当多个if else语句嵌套时,else会和最近的if匹配。if和else合起来才是一条语句。再写if语句时尽量多用大括号,这样代码更加漂亮,可读性好。当一个常量和变量比较的时候,常量放左边,避免写错代码赋值。

在使用if语句的时候,注意以下情况

d2539b27b3774e14bcd7e31b70bd2506.png

37a16f86424c4358aa718fdbf8a28b74.png 

 这两种情况都打印了yes出来,是第二张图片中的if的表达式写成了赋值表达式,而不是==的判断表达式,所以,再进行常量和变量的判断时,我们建议将常量放在左边,变量放在右边,这样的话我们即使少写一个等号编译器也会报错,我们能够认识到错误的地方。

 

 

2.switch语句

switch语句常用于多分支语句,当选择语句分支较多时,用if语句就过于复杂了。

语法结构
switch(整型表达式)
{
语句项
}

语句项是
case 整型常量表达式:
语句;

case后面的表达式要满足整型和常量两个条件,字符也可以,但是不要加单引号,因为字符本质上存储的也是他的ASCII值。

但是有一点要注意,当某个case满足条件了,它会一直执行,直到switch语句结束,我们要用到break来跳出去,我们要养成每条case语句都加一个break的编程好习惯。我们有时候也可以不要break来满足逻辑需要。


switch语句也可以嵌套使用,要注意break只能跳出自己所在的switch。

f6bb142188424d7b89203c1fa66aa5b1.png

 

fea707315cbd4e92ba3567c959f4ddd4.png

 

ec098af949464551a0450df39d336070.png
当没有case满足条件时,switch什么也不会做,也不会有提示,这种情况我们可以在最后加上一个default,表示前面都不满足条件,还可以加上一条提示语句
default:
printf(“没有满足条件的选择”);

 

18c7e7957b4548d3bf094edeb8137185.png

 fc6b93b46e6149b1b7468ebba085ef70.png

 

 循环语句

 1.while循环
while(表达式)
{
循环语句;
}
当表达式为真时就执行循环语句,循环语句执行完再判断表达式是否为真,这样一种循环,直到表达式为假跳出循环。
while循环内部也可以用break跳出,当满足某些条件需要跳出时可以用if语句和break跳出,

3319f1ad63d94ed6bca437a1d778e753.png
也可以是当满足某些条件时我们只用执行一部分循环语句,这时候可以在不用执行的语句前加上if语句和continue,意思是满足这个条件时直接跳过continue后面的代码,回到循环判断阶段来判断是否进入下一个循环,但是用continue的时候记得改变一下循环判断的表达式,避免造成死循环。

d3f4702b033344d1a646559602db2f59.png

注意,以上这个代码由于continue跳过了后面的i++操作,导致if语句会一直执行,所以造成了死循环,应改成下面这种:

a1c2b6eca3684e8c9bb987979cbfa741.png 

 

所以在while循环中,break是永久终止循环,continue跳过本次循环continue后面的代码,直接去判断部分,进行下一次循环的

 

 


2.for循环  

  从while循环我们知道,初始化(int i=1),判断(i<10),调整(i++),这三个部分都会对循环产生影响,但是while循环又不能直观地看到这三个点,没有把这三个因素集中在一起,所以我们说while循环并不是循环的最优方式。而for循环就是一种很好的解决了这个问题的循环方式,

for循环的构造方式:for(表达式1;表达式2;表达式3)

表达式1是初始化部分,表达式2是条件判断部分,表达式3是调整部分。例如我们要打印0到9这十个数字。for循环与while循环一样,默认执行一条语句,如果有多条语句,也要用大括号括起来。同时,for循环也可以使用break和continue,用法与在while循环中使用一样,for循环continue会跳过后面的代码直接进入调整部分,

9922ef2e4a884de29c1909283a005312.png

 

b9cfea2d33fe47518a9f13cdc57ed47a.png 

 

 215edc8ee1d74a509e506b431d204cd8.png

 

还是一样的,嵌套循环中break跳出循环只能跳出他所在的那一层循环。

0d08f3ba658940a483a66b062a9d0d8d.png

 

建议 尽量不要在for循环体内修改循环变量,防止循环失去控制。
        循环的判断最好写成前闭后开区间的形式,例如打印数组的时候写成i<sizeof(arr),这不是绝对的,最终还是得按使用场景来决定。


一些for循环的变种:1、当for循环的初始化、判断、调整都省略时,会死循环,因为for循环的判断部分省略意味着判断会恒成立。
                                 2、省略初始化时,一层循环时也能正常执行,但是当嵌套时,当循环变量都是在循环外定义时,可能第二层循环只会执行一轮,之后就不执行了。
                                 3、在初始化部分创建变量,这种写法在C语言中只有C99标准才有,有些编译器会报错,而在C++中是可以这样写的。

不建议大家乱省略,代码很容易出问题。

 

还可以多个变量控制for循环。

a99fa81080f1477e90d8d6c28e062010.png

 

3.do…while循环

语法形式:
do
      循环语句
while(表达式)


do…while循环从结构上就可以看出来这个循环至少会执行一次,他是先执行循环语句再进行判断,表达式为真则继续执行,为假则结束循环。

087a3a9ecd3d4cd49d434fe4b5966615.png

上述代码中,while的判断条件恒为假,但是循环语句还是执行了一次。

 

break和continue在do…while也是可以使用的,但是也要注意调整循环变量语句的位置。

各位可以自己试一下break和continue的位置对循环的影响,实践出真知。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值