摘要:本篇主要介绍了C语言基础入门-分支 ,通过具体的内容展现,希望对c语言开发的学习有一定的帮助。
本篇主要介绍了C语言基础入门-分支 ,通过具体的内容展现,希望对c语言开发的学习有一定的帮助。
208小时视频教程,995份干货资料,扫码领取资料+高薪就业咨询
在结构化程序设计中,有以下三种结构:
顺序结构
选择结构
循环结构
通过以上三种结构,我们很好地设计程序
其实,我们生活中所碰到的所有情况都与这三种结构息息相关
下面是一些基础的知识点:
在C语言中,0为假,非0为真
在C语言中,以“;”为结尾的是一条语句
代码块就是用“{”和“}”括起来的代码段落,里面可包含一条或多条语句,代码块的作用就是划定一个作用域
顺序结构
顺序结构,顾名思义,就是按照顺序来执行语句
选择结构
选择结构,即程序执行出现分支,具体包括单分支双分支和多分支
首先,我们介绍一个函数:
if函数
if函数语句结构的语法是这样的:
if(表达式)
表达式为真时执行的语句;
//也可以写成这样
if(表达式)
{
表达式为真时执行的代码块;
}
if语句结构(也叫单分支选择结构)是由if函数表达式和if下面的一条语句或代码块组成的。if中表达式为真时,执行if下面的一条语句或代码块;否则,跳过if语句结构,执行其它语句
单分支选择结构
如果表达式1为真,则执行语句1,然后执行语句2(也就是其它语句);否则,跳过这个if函数结构,直接执行语句2(其它语句)
//该结构在程序上的体现为
if(表达式1)
{
语句1;
}
语句2;
//也可以这样写
if(表达式1)
语句1;
语句2;
第一种写法是加入了代码块的写法,这样写的好处就是代码看起来更清晰。
如果我们想在经过if判断后执行多个语句,则必须以代码块的形式书写,如下:
if (表达式)
{
语句1;
语句2;
...
}
双分支选择结构
if-else语句结构
在if语句结构的基础上加上else,就构成了双分支选择结构语句,我们叫它if-else语句结构
如果表达式1判断为真,执行语句1然后执行语句3(也就是其它语句);否则,执行语句2再执行语句3
用C语言表述以上结构:
if (表达式1)
语句1;
else
语句2;
语句3;
多分支选择结构
if与else的嵌套结构
在很多时候,我们面临的问题往往是很复杂的,所以需要用多分支选择结构,下图就是3组if-else语句的嵌套结构
如果表达式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配对
不过,有种情况例外:
离else最近的一个if确实没有和其它else配对,但是这个if和else不在同一个作用域里面(有{ }隔开,所以作用域不同),所以不能匹配
我们可以把这个语法简单记为“else的就近原则”
例题:以下代码的打印结果为多少?
答案:不打印
原因: 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结构,执行其它语句)
未完待续...
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号
ICP许可 沪B2-20190160