分支语句你真的学明白了吗??

从今天开始,进入了我们C语言学习的主线部分。

C语言中的分支语句分为两种,分别是if语句和switch语句

1、什么是语句?

C语句分为以下五类

1、1表达式语句

即表达式+语句。例如2+3, a+b为表达式   在它们后面加上语句的标志  ;(英文的分号)就成了语句

1、2函数调用语句

调用函数时使用的语句

1、3控制语句

官方说法:用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、分支结构、循环结构)。

(1)顺序结构:最简单的结构,按部就班的一步步执行。

(2)选择结构:  程序执行到某个位置时会进行选择,进而进入不同的分支,然后再执行后续程序。

(3)循环结构: 程序进行到某个位置时会根据一定条件进行判断是否循环执行这一部分程序。

上述三种结构由特定的语句定义符组成,C语言有9中控制语句。可以分为以下三类

(1)条件判断语句:if 语句  switch语句

(2)循环执行语句:do while语句  while语句  for语句

(3)转向语句:break语句  goto语句 continue语句  return语句

即不按照程序应有的顺序执行,跳转到其它位置,之后会慢慢介绍。

1、4复合语句

复合  迭代  复杂死你=-=

1、5空语句()

一个分号,没有其它内容。

2、分支语句(选择结构)

2、1if语句

语法上有单分支、双分支、三分支

下面我们用一个人是否成年作为示例:()内为判断条件

上图为单分支结构,输入age>=18时会打印成年,但是输入18以下的值时程序啥也不会做

 

上图为双分支结构,输入15或任意<18的值时会显示未成年

但是仅仅区分是否成年并不能满足我们的需求,我们可以使用多分支对于人的年龄段进行更加详细的划分。 

上图的else if语句即多分支语句的一个语法  可翻译为或者如果/或者当...时。值得注意的是&&符号表示并且,即左右两个条件必须同时满足 ,此时我们任意输入一个age的值,

 就会从if(age<=3)开始挨个向下判断,如果满足条件就进入并执行相应的打印功能(并跳出),如果不满足就接着向下,直到有一个满足,此时会进入该条语句执行,然后会跳出if语句,不执行后续的else if和else

总结一下就是按步执行,不满足则向下,满足则进入执行,并跳过后续。

上述是if语句的基本语法形式,下面介绍一下if语句的几种不好的书写习惯及其造成的后果

现在大家思考一下,这个代码运行的结果是什么??

如果你的答案是haha,恭喜你,回答错了

 

 代码运行后的结果为空,即不打印任何东西。这里的else看似与if(a==1)对齐,实际是与if(b==2)相对应  从而产生了歧义和错误。这是因为我们没有使用代码块 即{} 将其分隔

加入代码块后就很清晰了。不加代码块时,if以及else if 和else只能作用于它们下面的一条语句,加入代码块后,可以作用于整个代码块{}内部。

注意,我们写代码时要养成良好的代码习惯,比如if  else语句最好加上代码块,if与else的对齐情况,从而增加自己代码的  可读性 ,避免歧义和错误 

加入合适得到代码块后,我们可以使打印的结果为haha。 

综上:else的匹配遵循就近原则,但是有代码块时代码块优先

2、2switch语句

if-else语句已经能够解决所有的分支问题了,但是if --else if--else if--........--else在描述多分支问题时显得有些麻烦,因此出现了switch语句,常用于多分支的情况。

下面我们用星期的打印来讲解switch语句的语法

2、2、1语法形式

这里我们输入2,对应的就是case2,打印出今天是 星期2。当输入的数不在1-7范围内,会进入default中,然后打印输入错误。

 这里注意一下case的形式  打完case之后加一个空格,然后在打数字  最后打一个英文冒号 :

2、2、3break的用法

在switch语句中,每一个case都是程序的入口,每一个break都是程序的出口(直接跳出这个switch语句)。

如上图所示,当我们输入2时,程序从case 2:进入,并且往下执行,因为没有break,所以会一直执行到switch语句结束,为了得到星期2,我们就要在case 2:中加上break语句让它及时中断 跳出 

注意:switch()括号中必须是整型的语句,例如day是整型类型,不能是例如float、double ,同时case后的值是整型常量表达式    指0 1 2等数值常量。

同时补充一点,case后的break在某些逻辑下是可以不加的

例如,我们将星期1-5作为工作日,6-7作为休息日

输入3时,程序从case 3进入,只打印一个工作日,相比把每个case都加上打印工作日和break,这种方法大大减少了代码量,可以提高运行的效率,但前提是写代码时的逻辑要满足                   (几个不同的输入,但它们输出的内容相同)

感谢大家坚持看到现在,学会了分支语句,你就能在人生的道路上做出正确的选择^.^

码字不易,希望大家能够多多的支持^.^^

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值