眼部整形

首页 » 常识 » 诊断 » 从零开始学习C语言丨判断结构
TUhjnbcbe - 2023/4/30 21:02:00

讲运算符中,学习了关系运算符和逻辑运算符,其中都有谈及程序语言中非常重要的结构之一,判断结构。本篇文章就来讲一讲判断结构。

计算机语言的运行是按照顺序结构执行的,也就是一条路走到黑。就好比一些游戏,它是有一条主线的,但是结局是多样性的,有HE(HappyEnding,完美结局),也有BE(BadEnding,悲剧结局)。

至于走向是HE,还是BE,取决于你在游戏中的行为。而这些行为就是判断条件,如果符合条件,那么就执行HE,否则就执行BE。由此可知,判断结构需要具备两个内容:判断条件和判断结果。

那么程序结构有哪些类型?

三元运算符首先,先说一个之前学过的一个运算符,三元运算符。它也是属于一种判断结构。和其他判断结构不同的是,它只能表示两种结果,要么是,要么不是。

来回忆一下三元运算符的格式:

34是判断条件;1或者0是判断结果。

三元运算符的结果除了冒号前后的两个数据,就不会有第三种结果了,这就存在了局限性。如果我有多个条件,不同的条件所执行的结果也不同,显然三元运算符是不能满足的。比如还是去网吧的例子,首先得年满十八岁,且钱带足了,才能进去玩耍;如果满十八岁,但是钱不够,会被提醒带够钱,然后请出去;如果钱带够了,没满十八岁,会被提醒未成年禁止进入,然后请出去。而三元运算符只有一个条件,两个结果,显然是无法完成这样的案例。那么,我们就需要知道另外的判断结构,if-else结构和switch结构。if-else结构在我当前的认知里面,if-else结构是使用最多的循环结构。(很大的原因,是因为我先学了Python,而Python里面是没有switch结构的。)在if-else结构中,最少都有两种结果。其中if是表示如果的意思,else是表示否则的意思。再说一个可能会让大家产生误解的话:在if-else结构中,if是可以单独出现的,else是可有可无的,但是必须要和if配对。

先来看一个有if和else的结构:

其中if后面是要跟上条件的,而else后面是不用跟条件的。如果if后面的条件不满足,那么自动会找配对的else,然后执行里面的命令。如果没有else,那就直接跳过,运行下面的代码。

那么问题来了,if和else各自执行出一个结果,那么如果if独立出来,不就只有一个结果。作者你是怎么敢说至少两个结果呢?不!if单独出现,虽然只有一个条件,执行的部分也只有一个,但是它的结果是两个的。一个是满足条件,执行出的有结果;另一种是不满足条件,不执行出的没有结果。有和没有,就是两种结果。到这里,我们就知道了无论是只有一个if,还是if-else成对出现,结果都会是两个。但现在,我想要三个结果,应该怎么做呢?if-else之间还有一个判断方式,叫作否则如果,写作elseif。这个判断方式在if-else结构中也不是必须的,除非你有很多条件需要判断,否则只有一个判断条件,就用不到elseif。

写一个去网吧的例子。

if判断后面的条件实际上是有2个,一个是判断年龄,另一个判断金钱。通过逻辑运算符,将两个条件合并成一个布尔表达式。

,与运算符,两个条件同时满足时,该表达式的结果为真(true),就执行下面的内容。反之为假(false),跳过if包含的代码块(跟在条件后面的{...}里面的内容)。switch结构

先来看一下switch结构语法:

认识一下语法中的每个单词表示的含义:

1、switch:开关。即这个循环结构的开关,表示准备开始循环。2、expression:表达式。这里可以是一个变量、但类型必须是整形、枚举类型或者class类型,其中class中必须要有单独的一个函数将其转换为整型或者枚举类型。(目前就先记着,类型可以是short、int、long的整数,以及char的字母。)3、case:案例。相当于if和elseif。4、contant:常数。该部分内容是判断的值,且必须和expression的类型必须是一致的。如果是整型,这个值就是1、2、3;如果是字符型,这个值就是a、b、c。这个值相当于是条件。5、statements:语句。这里是指满足case后面的值和expression传递进来的值是一致的,则要运行的内容。6、break:终止。代码块中碰到break关键字则结束运行,剩余的内容就不再运行了。7、default:默认。和else的作用是一样的,如果以上case后面的值都不满足,则执行这一块下面的代码语句。理论上,default放在哪里都是可以的,但是需要注意的是,如果放在case上面,一定要加上break关键字。一般建议是放在代码的最后。

来看一个switch结构的简单案例:

当输入0给a,这段代码的运行结果是:第一关第二关。

这个结果显然不是想要的。之所会出现这种情况,就因为少了一个break。switch不会像if-else结构一样,满足哪个条件,就执行哪部分内容,执行完就直接跳出。switch代码块的内容都是一个整体,如果没有break关键字,就会发生穿透,也就是代码会按顺序执行下来。直到碰到了break,或者全部运行完,才会跳出判断。嵌套循环嵌套就是套娃行为,嵌套循环就是判断里面还有判断。例如:去网吧首先要对年龄进行判断,符合规定才能允许进去。进去后还要根据你缴交的钱,判断你是开的豪华包厢,可以玩高配电脑;还是在氛围贼好的大堂,玩普通配置的电脑。

用if-else嵌套结构实现:

switch结构一般是对几个常量进行判断的。就比如我们去ATM取钱,在登录后会让我们选择查询余额、存取款、转账交易等行为。我们会根据系统给出的提示按下相应的数字进入界面操作。

比如存取款是按下2进入相应界面,之后又有几个选择,按1选择存钱,按2选择取钱,按0退出。

用switch嵌套结构实现:

一般情况下,建议尽可能少使用嵌套循环,迫不得已要使用嵌套,三次就差不多了。如果嵌套了太多,会导致代码的可读性急剧下降,且后期的维护就变得非常困难。

最后

关于判断结构的介绍和使用就到这里结束了,文章我们讲另外一个重要的结构——循环结构。对文中有疑问或者出现错误的地方,欢迎大家在评论区指正。

如果您觉得文章还不错的话,点赞、分享支持一下呗!

1
查看完整版本: 从零开始学习C语言丨判断结构