分支与循环语句 之C语言

将分支与循环语句之前,我们先来认识了解c语言的各种语句

一、 什么是语句?

C语言语句可以分为以下的五种

      1 表达式语句

      2 函数调用语句

      3 控制语句

      4 复合语句

      5 空语句

本章重点讲解 3控制语句,那么控制语句是什么呢?其实控制语句就是指,用于控制程序的执行过程,以实现程序的各种结构方式。(有顺序结构、选择结构、循环结构),它们由特定的语句定义符组成。

其实C语言控制语句又可以分为9种3类

      1 条件判断语句也叫分支语句 如: if语句   switch 语句

      2 循环语句 如: for循环语句  while语句   do while语句

      3 转向语句 如 break    continue.     go to.   return语句

二、if语句

2.1 首先介绍分支语句的if语句

    if语句的语法形式如下:

    if(表达式)

               语句

     如果表达式为真则执行语句,如果为假,则语句不执行,那什么是真什么是假呢?其实在C语言中真是非0,假是0,也就是说,表达式为0则语句不执行,否则就执行。

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

它的执行流程图如下:

2.2 else

例1:如果这个数不是奇数,那就是偶数,如何用代码表示呢?可以用if   else  语句表示代码如下:

例2:

输入一个年龄,如果大于18输出成年,否则输出未成年

如果输入一个年龄>=18才可以谈恋爱,有些人可能会写成这样子的代码:

运行结果如下:

你会发现无论输入大于等于18的数还是小于18的数都会打印可以谈恋爱了,这是因为if语句只能控制一条语句,对于printf("可以谈恋爱了\n")是单独的一条语句,不关if语句是真是假都会被执行,如果if语句想要同时执行多条语句怎么办呢?只需要用{}讲代码括起来,else语句也同样可以。

如下代码

2.3 嵌套if

在if else语句中,else可以与宁外一个if语句连用,构成多重判断

例如:输入一个整数数,判断它是0,是正整数,还是负整数

2.4else悬空问题 

请看如下代码:

这就是else悬空问题,可能很多人会认为代码的执行过程是先判断if(a==0)为假执行else语句打印hehe,然而却什么都没打印,为什么呢?因为else总是跟它最接近的if想匹配,所以else是与第二个if匹配的,如果第一个if语句为假,后边的if else就没法执行了,最终什么都没打印。

如果把代码改成下面这样就更加容易理解

如果我们希望else 与第一个if相匹配,也可以这样修改代码:

只要我们加上适当的{}括号代码的逻辑结构就会更加的清晰,可读性也会得到提高。

三、关系操作符

讲之前我们先来了解一下关系操作符有那些 如下:

>大于

< 小于

>= 大于等于

<= 小于等于

==等于

 !=不等于

四、条件操作符

上面我们了解了关系操作符有那些,那么什么是条件操作符呢?条件操作符也叫三目操作符,需要三个操作数形式如下:

exp1?exp2:exp3

计算逻辑是如果exp1为真则执行exp2,否则只想exp3,下面用一个代码体会一下三目操作符的运0算过程,首先用if语句实现该代码再用三目操作符实现

例二:

使用条件表达式找出两个数中的最大值

例3:闰年判断

闰年判断的规则:

能被4整除并且不能被100整除

能被400整除

五、switch语句

5.1switch语句介绍与基本的语法

switch语句是一种特殊的if else结构,用于判断条件有多个的情况。它把多重的else if改成更易用可读性更好的形式。

1switch(expression){

2case value1: statement

3case value2: statement

4default: statement

}

上面代码中根据表达式expression不同的值,执行相应的case语句。如果找不到相对应的值,就用default分支语句。注意,expression必须是整形表达式,case后面的值,必须是整型常量表达式。

5.2if语句和Switch语句的对比

例1 输入任意一个整数值,计算除3之后的余数。

使用If语句实现代码

使用switch语句实现代码

5.3switch语句中的break

前面代码中如果去掉break会发生什么事呢?

你会发现6除3的余数是0但是却打印了余数是1的语句,如果case语句后面没有break语句代码会继续执行下去,有可能会执行其他的case语句,直到遇到break语句或switch语句才停止,当然不是每一个case语句都需要brake,具体情况具体分析。

例2输入一个数字打印对应的星期几

如果发生需求星期一到星期五打印工作日星期六到星期天打印休息日参考代码如下:

5.4switch语句中的default

如果switch表达式无法与case语句匹配时,要不要做处理,根据具体情况而定,如果需要处理,就需要加入default语句了如下例代码:

六、while循环语句

6.1if与while的对比,下面用一段代码对比一下

打印haha

无限循环打印haha

6.2while语句执行流程

⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语
句,语句执⾏完后再继续判断,是否进⾏下⼀次判断

while实践

例1:打印1到10的数字

例2:输入一个正整数逆序打印每一位

七、for循环

7.1循环执行流程

⾸先执⾏ 表达式 1 初始化循环变量,接下来就是执⾏ 表达式 2 的判断部分, 表达式 2 的结果如果
==0,则循环结束; 表达式 2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式
3 ,调整循环变量,然后再去 表达式 2 的地⽅执⾏判断, 表达式 2 的结果是否为0,决定循环是否继
续。
整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循
环。

7.2for代码实践

例1:打印1到10
例2:计算1到100之间3的倍数数字之和

八、do while循环语句

8.1do while语法形式

do

         语句

while(表达式)

8.2do while执行流程图

8.3do while实践

例1:打印1到10的数字

例2:输入一个数计算它是几位数

九、循环的嵌套

下面是几个代码练习题

例1:

打印100~200之间的素数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值