C语言基础入门-分支
小职 2022-01-25 来源 : 阅读 849 评论 0

摘要:本篇主要介绍了C语言基础入门-分支 ,通过具体的内容展现,希望对c语言开发的学习有一定的帮助。

本篇主要介绍了C语言基础入门-分支 ,通过具体的内容展现,希望对c语言开发的学习有一定的帮助。

C语言基础入门-分支


208小时视频教程,995份干货资料,扫码领取资料+高薪就业咨询

C语言基础入门-分支


在结构化程序设计中,有以下三种结构:

顺序结构


选择结构


循环结构


通过以上三种结构,我们很好地设计程序


其实,我们生活中所碰到的所有情况都与这三种结构息息相关


下面是一些基础的知识点:

在C语言中,0为假,非0为真


在C语言中,以“;”为结尾的是一条语句


代码块就是用“{”和“}”括起来的代码段落,里面可包含一条或多条语句,代码块的作用就是划定一个作用域


顺序结构

顺序结构,顾名思义,就是按照顺序来执行语句

C语言基础入门-分支



选择结构

选择结构,即程序执行出现分支,具体包括单分支双分支和多分支


首先,我们介绍一个函数:


if函数


if函数语句结构的语法是这样的:


if(表达式)

 表达式为真时执行的语句;

 

 //也可以写成这样

 if(表达式)

 {

 表达式为真时执行的代码块;

 }

 

if语句结构(也叫单分支选择结构)是由if函数表达式和if下面的一条语句或代码块组成的。if中表达式为真时,执行if下面的一条语句或代码块;否则,跳过if语句结构,执行其它语句


单分支选择结构

如果表达式1为真,则执行语句1,然后执行语句2(也就是其它语句);否则,跳过这个if函数结构,直接执行语句2(其它语句)

C语言基础入门-分支



 //该结构在程序上的体现为

 if(表达式1)

 {

     语句1;

 }

 语句2;

 //也可以这样写

 if(表达式1)

 语句1;

 语句2;

第一种写法是加入了代码块的写法,这样写的好处就是代码看起来更清晰。


如果我们想在经过if判断后执行多个语句,则必须以代码块的形式书写,如下:


 if (表达式)

 {

     语句1;

     语句2;

     ...

 }

双分支选择结构

if-else语句结构


在if语句结构的基础上加上else,就构成了双分支选择结构语句,我们叫它if-else语句结构

C语言基础入门-分支



如果表达式1判断为真,执行语句1然后执行语句3(也就是其它语句);否则,执行语句2再执行语句3


用C语言表述以上结构:


 if (表达式1)

 语句1;

 else

 语句2;

 语句3;

多分支选择结构

if与else的嵌套结构


在很多时候,我们面临的问题往往是很复杂的,所以需要用多分支选择结构,下图就是3组if-else语句的嵌套结构

C语言基础入门-分支



如果表达式1成立,执行语句1后执行其它语句;否则,判断表达式2。


如果表达式2成立,执行语句2后执行其它语句;否则,判断表达式3。 


如果表达式3成立,执行语句3后执行其它语句;否则,执行语句4,然后再执行其它语句


让我们用C语言实现以上结构:


 if(表达式1)

 语句1;

 else if(表达式2)

 语句2;

 else if(表达式3)

 语句3;

 else 

 语句4;

 其它语句;

如图,1~8行就是if与else的嵌套结构。


if与else还可以更多层的嵌套


注意:一个else必须要有一个if与之配对,且与之配对的if是有条件的:距离这个else最近,未与其它else配对


不过,有种情况例外:

C语言基础入门-分支



离else最近的一个if确实没有和其它else配对,但是这个if和else不在同一个作用域里面(有{ }隔开,所以作用域不同),所以不能匹配


我们可以把这个语法简单记为“else的就近原则”


例题:以下代码的打印结果为多少?


C语言基础入门-分支


答案:不打印


原因: else只能与最近的if配对,所以else与第二个if配对,组成了一个双分支语句(注意,if-else整体构成了一个语句,这个语句叫做双分支语句)


由此可知,第一个if语句的下一条语句是一个if-else的双分支语句。从第一个if的角度来看,这就是一个单分支选择结构。很明显,第一个if表达式为假,所以直接执行return 0;


书写代码时需要注意的格式问题


//代码1

 if(表达式)

 return 0;

 return 1;

 //代码1的修改后

 if(表达式)

 {

   return 0;

 }

 else

 {

   return 1;

 }

 //代码2

 int a = 1;

 if(a = 2)

 {

   printf("haha");

 }

 //代码2修改后

 int a = 1;

 if(2 == a)

 {

   printf("haha");

 }

我们一眼看过去,感觉代码1应该是单分支语句,如果你这么看的话,就中计了,这段代码实际上是双分支语句:如果if表达式成立,执行return 0,之后不再执行任何代码;否则,执行return 1


这样的写法容易导致读者理解出错,可读性差!


在代码2中,我们一眼就能看出作者所犯的错误,作者本意应该想写“==”但却写成了“=”。但很神奇的是,这段代码是可以运行的,只是结果和我们预料不一样:成功打印出了haha 原因是“=”是赋值运算符,将2赋值给a,表达式结果为真


为了避免这种错误,我们应该尽量采用修正后的写法:常量和变量进行判断时,常量放判断运算符的左边,变量放右边


switch语句也是一种分支语句,常常用于多分支选择结构


switch语法:


//switch语句的基本结构

 switch(整型表达式)

 {

         语句项;

         语句项;

         ...

         语句项;

 }

 //语句项就是一些case语句,下面是一个case语句项的结构:

 case 整型常量表达式:

     语句;

     break;

switch的整型表达式会有一个结果,若某语句项中的整型常量表达式与这个结果相同,则执行这个语句项的语句 。


break的作用是使程序跳出switch结构,执行下面的其它语句


注意:如果没有break语句,执行完某个语句项后,会继续执行这个语句项后面面的语句项里的语句,直到下面没有其它语句项,跳出switch结构执行下面其它语句。


在某些情况下,break不用写,所以break可根据实际情况来添加或删除。


不过,需要记住,在最后一个语句项添加break,这是一个好习惯(可能后面要添加新的语句项)


如果出现switch整型表达式的结果与下面语句项都不匹配的情况,应该怎么办?


别担心,C语言提供了一个default语句项,可以帮助我们解决这个问题


 default:

    语句;

    break;

default语句项的作用往往是处理一些非法的情况,它不是switch结构所必须的,但为了保险起见,还是尽量加上。


一个switch结构有且只有一个default语句项。


switch的语句项之间没有顺序之说,不过建议还是按照一定的逻辑来排列这些语句项


上面是switch的语法逻辑可能有些不好理解,记忆也不太方便。


我写一下我自己对switch结构的理解:

假设你是一个小偷,有一个很大的房子(整个switch结构),这个房子有许多的房间(语句项),每个房间的门都有一把锁(case后面的整型常量表达式)。你手里面有一串钥匙(switch括号里面的整型表达式的结果),你走进了你能开锁的房间(进入能匹配的语句项),开始偷东西(按照顺序结构执行完语句项的语句)。正常情况下,偷完东西,你该离开这个房子了(语句项的语句执行完毕,应该跳出switch结构)。

就在这时,你发现你所在的房间与隔壁房间是相通的(该语句项没有加break语句),你贼心不死,还不满足,把隔壁房间也偷了(执行下一个语句项的语句)。在这之后,你发现隔壁房间未与其它房间相通,被墙壁堵住(这个语句项加了break语句),所以你只能另谋财路了(跳出switch结构,执行其它语句)

未完待续...




本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程