分支和循环(1)

简介: 分支和循环(1)

c语言中的分支结构有if和switch,循环结构有for,while和do while。并且在其中经常会与break,continue,goto语句进行穿插使用。


1.if语句


(1) if

if 语句的语法形式:

d14bdaaeeda14638aff3c7d7002cf8e2.png

表达式为真,则语句执行,表达式为假,则语句不执行。

注意: c语言中0为假,非0为真。

if语句的流程图如下:

b8be14c90fa6492ba25f288d001bac0a.png

(2) else

else语句是必须要与if语句联合使用的,也就是if...else语句。下面我们来看一个例子:如果我想要判断一个人是否成年(18岁),用if...else语句完成应该怎么做呢?

d2523f0ef68a4efcb03632b121df4b0d.png d133dea0b0664f878b7e1db6d73bb522.png

图中我们看到,如果输入10,那么if语句的表达式(age>=18)为假,所以不执行if后面的语句,执行else后面的语句;如果输入20,则表达式(age>=10)为真,执行if后面的语句,不执行else后面的语句。这就是if...else的分支。


(3)分支中包含多条语句

if和else都默认只能控制一条语句

比如:

404b3de6448d4248b252f71a6b2d338e.png 5f1332da7187478dab4c7f6bda6ea310.png

可以看到无论age是否大于18,第九行语句都会被执行。这是因为if语句只能控制一条语句(第八行),如果想要控制多条语句,可以把要控制的语句用” () "括起来,如:

ecbe997473394faea9d59388b8b4c87e.png

(4)嵌套if

if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。

比如:判断一个数字是0,还是正数或者负数

06c9979f0c514ef6a9868f04ac4a04d2.png

再比如:如果x是正数,就判断x是奇数还是偶数,并输出;否则输出x是非负数。

01534925718444598a5098f1fbeec3ac.png

(5)悬空else问题

看以下代码:

859eace086c54d9f8ac551858c11feac.png

很多初学者都以为程序运行的结果是打印haha,判断x是0不是1就立马执行else语句,输出结果haha。实际上输出结果什么也没有,这是因为else只能与它最近的if配对,也就是图中第二个if语句,如果第一个if语句条件不成立的话,那么第二个if语句就没有机会执行了,else语句自然而然也没有机会执行了,如果我们把代码写成这样可能会更加容易理解。

image.png

所以应该注意, else语句只能与它上面最近的if语句配对。


2.switch 语句


除了if语句,c语言中还有switch语句可以实现分支,switch语句可以说是一种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。

52514dd8a9cd488ebbd766de3b1c43be.png

上面就是switch语句的书写格式,其中的case语句可以有多条,switch语句会根据表达式expression的值执行对应的case语句,如果找不到就和=会执行default语句。

注意:switch 后的 expression 必须是整型表达式

          case 后的值,必须是整形常量表达式

          case 和后边的数字之间必须有空格


3.if语句和switch语句的对⽐


问题:输⼊任意⼀个整数值,计算除3之后的余数。

用if语句完成

e1e4df03b6fe4636b67ae20a18696b91.png

用switch语句完成

6404b96fbd5f4fafa6e81dff95e2ac36.png

4.switch中的break和default

 (1)break

如果上面的代码中的break语句去掉会出现什么情况呢?

9f74355bde1d44a9bae8837905866f31.png

可以看到如果我们把break语句去掉之后,分支全部被执行了,原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。


(2)default

在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹

配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊

default 语 句。

比如:输入1到7,并且输出与之对应的星期,如:输入1,输出星期一。

9cd58e433fd3477294558187f402f1c4.png

可以看到,当我们输入8的时候,在case语句中找不到与8对应的分支,那么就会执行defalut语句。

目录
相关文章
|
4月前
|
C语言
关于分支与循环的一些细节
关于分支与循环的一些细节
|
4月前
|
C语言
分支与循环讲解
分支与循环讲解
|
4月前
|
编译器 C语言
语句、分支与循环详解
语句、分支与循环详解
|
6月前
|
程序员 编译器 C语言
分支和循环(一)
分支和循环(一)
|
6月前
|
C语言
分支和循环(二)
分支和循环(二)
|
6月前
|
数据安全/隐私保护
分支和循环语句(2)
分支和循环语句(2)
34 1
|
7月前
|
C语言
分支和循环(2)
分支和循环(2)
54 3
|
编译器 C语言
分支与循环(1)
分支与循环(1)
分支与循环(1)
|
7月前
|
存储 缓存 Linux
分支与循环语句1
分支与循环语句1
43 0
|
程序员 编译器
分支与循环
分支与循环