C语言的分支与循环

前有绝命毒师Breaking Bad,今有绝命码农Breaking Tired

前言

C语言是一种 结构化程序设计语言
结构 分为

  • 顺序结构
  • 选择结构
  • 循环结构

根据不同的需求,我们使用对应的结构语句来完成任务。

  • 条件判断或者分支语句:if 、 switch
  • 循环执行语句:do while 、 while 、for
  • 转向语句:break 、goto 、 continue 、 return

1. 分支

1.1if

1.1.1 if 语句的表达式:

在这里插入图片描述

如果表达式成立),则语句执行
如果表达式不成立),则语句不执行

**注意!在C语言中,0表示假 ,非0(不一定是1)表示真 **

示例:输入一个整数,判断是否为奇数

在这里插入图片描述

在这里插入图片描述

1.1.2 else

if 的表达式若成立,则执行 if 的语句。
如果表达式不成立,又想执行另外的语句,则我们可以使用 else

在这里插入图片描述

就如上面 if 的案例,如果输入的数是 奇数 则打印 “ 是奇数 ”
不是奇就是偶,加入 else 表示否则将打印 “ 是偶数 ”

在这里插入图片描述
要注意的是,ifelse 都只能控制一条语句,如果需要控制多条语句,需要用{ }将语句括起来。

1.1.3嵌套if、else

if …else …. 语句中, else 可以与另⼀个 if 语句连用,构成多重判断

在这里插入图片描述

如果有多个 ifelse,要留意 悬空else问题

在这里插入图片描述

运行结果为 什么都不打印
上⾯的代码排版中,让 else 和第⼀个 if 语句对齐,让我们以为 else 是和第⼀个 if 匹配的,当 if 语句不成立的时候,自然想到的就是执行 else 句,打印 “haha” ,但实际上 else 是和第⼆个 if进行匹配的,这样后边的 if else语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不
成⽴,嵌套 ifelse 就没机会执行了,最终啥都不打印。

注意!else 总是与 其最近的if 匹配!

1.2 switch

1.2.1switch语句的表达式:

在这里插入图片描述

  • expression指表达式
  • value指表达式计算的值
  • default指如果在所有的 case 找不到对应的值,执行default分支
  • defaultcase 没有顺序要求,不过一般把default放在最后面。

expression必须是一个 整型表达式
case后的value,必须是一个 整型常量表达式(字符也算)

示例:输入数字1~7,打印对应是工作日还是休息日:
在这里插入图片描述

1.2.2 switch中的 break

break的作用是 跳出switch语句
如果某⼀个 case 语句的后边没有 break 语句,代码会继续往下执行,有可能执行其他 case语句中的代码

2. 循环

2.1 while循环

2.1.1 while循环表达式:

在这里插入图片描述

2.1.2 while循环执行流程

——判断括号中表达式的值,
若为 非0值 (真)进入循环执行循环体语句;
若为 0(假)不进入循环执行循环体语句。

——程序会一直执行循环直到表达式为0

示例:打印1~10的值
在这里插入图片描述
在这里插入图片描述

2.2 for循环

2.2.1 for循环表达式

在这里插入图片描述

  • exp1用于循环变量的初始化
  • exp2用于循环结束条件的判断
  • exp3用于循环变量的调整

2.2.1 for循环执行流程

——⾸先执行 表达式exp1 初始化循环变量,接下来就是执行 表达式exp2 的判断部分
表达式exp2 的结果如果==0,则 循环结束
表达式exp2 的结果如果!=0则 执行循环语句

——循环语句执行完后,再去执行 表达式exp3 ,调整循环变量,然后再去 表达式exp2 的地方执行判断, 表达式exp2 的结果是否为0,决定循环是否继续。

——整个循环的过程中,表达式exp1初始化部分只被执行1次,剩下的就是表达式exp2、循环语句、表达式exp3在循环。

示例:打印1~10的值
在这里插入图片描述
在这里插入图片描述

2.2.2 while循环和for循环的对比

forwhile 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候 while 循环的三个部分就比较分散,所以从形式上 for 循环要更优⼀些。

2.3 do while循环

2.3.1 do while循环表达式

在这里插入图片描述

2.3.2 do while循环执行流程

——在 do while 循环中先执行完语句,再去执行 “判断表达式”,判断表达式的
结果
是!=0,则继续循环,执行循环语句
是==0,则 循环结束

所以在 do while 语句中,循环体是至少执行⼀次的。

示例:打印1~10的值
在这里插入图片描述
在这里插入图片描述

3.转向

3.1 break和continue

3.1.1 作用

  • break 的作⽤是用于 永久的终⽌循环,只要 break 被执行,直接就会跳出循环,继续往后执行
  • continue 的作用是 跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所差异的

3.1.2 continue/break 在 for 举例

在这里插入图片描述

在这里插入图片描述
可以看到,程序跳过了 “5” 的循环部分,接着从六开始继续循环。
在这里插入图片描述
在这里插入图片描述
break则是从 “5” 开始直接停止,无论后面循环还有多少次

3.2 goto

3.2.1 goto的使用

在这里插入图片描述
goto适合在一些多层循环代码中,直接跳出循环,效率比较高
但是,一般情况建议少使用goto语句,如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以使用有一定风险。

  • 55
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值