第四章 分支机构程序设计

本文详细介绍了C语言中的关系运算符、逻辑运算符和条件运算符的使用,包括它们的含义、优先级和结合性。关系运算符包括大于、小于、等于等,逻辑运算符包括逻辑非、逻辑与、逻辑或,条件运算符则是三目运算符。此外,还讲解了if-else和switch语句实现的分支结构,以及在程序设计中的应用示例。
摘要由CSDN通过智能技术生成

4.1引例
例4.1

 

 

例4.2

 

 

 


4.2关系运算符、逻辑运算符、条件运算符
4.2.1关系运算符与关系表达式
1.关系运算符
关系运算符用于判断两个操作数的大小关系。在C语言中有6个关系运算符,如下

运算符含义
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于


注意
(1)关系运算符都是双目运算符,其结合方向是左结合
(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符
(3)关系运算符中,>,<,>=,<=的优先级相同==,!=的优先级相同,前者的优先级高于后者即“>=”的优先级高于“”。
2.关系表达式
用关系运算符加两个表达是连接起来的式子称为关系表达式。关系表达式的一般形式为
                                                表达式1关系运算符 表达式2
功能:

比较两个表达式的大小,返回一个逻辑值。
注意:
(1)注意区分运算符“=”和“”。“=”是赋值运算符,“==”是关系运算符。
(2)对实数进行相等判断可能得不到正确的结果。
(3)关系表达式中可以出现赋值运算符,因为关系运算符的优先级高于赋值运算符,赋值y运算符左边不是变量,会出现编译错误。
关系表达式主要用于分支结构中的条件判断。关系表达式的结果是一个逻辑值“真”或“假”,由于C语言中没有逻辑类型的数据,因此用“1”表示“真”,“0”表示“假”
例4.3

 

4.2.2逻辑运算符和逻辑表达式
1.逻辑运算符
关系表达式只能描述单一的条件。

运算符&&||
名称逻辑非逻辑与逻辑或
结合性右结合左结合左结合
优先级


注意:与运算符&&和或运算符||都是双目运算符,非运算符!为单目运算符。
2.逻辑表达式
用逻辑运算符将两个表达连接起来的式子称为逻辑表达式,逻辑表达式的一般形式为
表达式1 逻辑运算符 表达式2
逻辑运算符 表达式 1
逻辑表达式的结果也是一个逻辑值“真”或“假”即为“1”获取“0”。

xy!xx&&yx||y
00100
0非0101
非00001
非0非0011


关于逻辑表达式的说明:
(1)参与逻辑运算的数据可以是1和0,也可以是非零值和零,还可以是任何类型的数据,但最都是以非0和0来判断他们是“真”或“假”。
(2)在逻辑表达式中也可以使用赋值运算符,因为逻辑运算符的优先级高于赋值运算符,赋值算符左边不是变量,会出现编译错误。
(3)C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。即在由若干个子表达式组成的逻辑表达式中,从主向右计算,当计算出一个子表达式的值就确定了整个逻辑表达式的值时,此后就不再计算右边剩下的子表达式的值,这种情况称为“短路”
对于逻辑与(&&)运算,若“&&”左边的表达式的值为假,则可以得出整个表达式的值为假,那么“&&”右边的表达式将不再进行计算;只有当“&&”左边的表达式值为真时才计算右边表达式的值。
对于逻辑或(||)运算,若“||”左边的表达式的值为真,则可以得出整个表达式的值为真,那么“||”右边的表达式将不再进行计算;只有当“||”左边的表达式为假时才计算右边表达式值。
例4.5

 

 

算术运算符、关系运算符及逻辑运算符的优先级从高到低的顺序如下:

运算符算术运算符关系运算符&&和||赋值运算符
结合性右结合右结合
优先级


4.2.3条件运算符合条件表达式
1.条件运算符
条件运算符由“?”和“:”两个符号组成,用于条件求值,它是一个三目运算符,需要三个操作数。条件运算符的优先级低于逻辑运算符高于赋值运算符,它是右结合的。
2.条件表达式
由条件运算符将3个表达式连接起来的式子称为条件表达式,其一般形式为;
表达式1?表达式2:表达式3
条件表达式的执行顺序是:先计算表达式1的值,若值为非0,表示条件为真,则将表达式2的值作为整个条件表达式的值,否则,将表达式3的值作为整个条件表达式的值。
关于条件表达式的说明:
(1)条件表达式中表达式1的类型可以与表达式2和表达式3不同,表达式2和表达式3的类型也可以不同,此时系统会自动进行转化,结果为表达式2和表达式3中级别类型较高的,并将其作为条件表达式的类型。
(3)条件表达式中表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式,条件运算符的优先级高于赋值运算符。
(3)条件表达式允许嵌套。
例4.6

 

4.3使用if- else实现分支结构
4.3.1 if- else
1.双分支if语句
其一般表达式如下:
if(表达式)
语句1;
else
语句2;
其语义是首先求解表达式,如果表达式的值为“真”,则执行语句2;若表达式的值为“假”,则执行语句2,无论执行完语句1还是语句2,都会结束整个if语句的执行。
例4.7

 

 

 

 例4.8

 

 

 

双分支if语句可以用条件表达式替换。当if语句中只给同一个变量赋值时,可以使用条件表达式代替if语句。
2.单分支if语句
其一般形式如下:
if(表达式)
语句;
双分支if- else语句中,若缺省了“语句2时”,则构成了单分支语句,执行流程图。其语义是首先计算表达式,如果表达式的值为“真”,则执行语句;否则不执行语句,直接执行if语句的下一语句。
例4.9

 

 例4.10

 

 

 

无论在双分支还是单分支if语句的格式中,“表达式”都是用来描述判断的条件,语法上可以是任意类型的表达式。表达式的结果如果为“0”,表示“假”;结果为“非0”,则表示“真”。
无论在双分支还是单分支if语句的格式中,被执行的语句均为单个语句。如果想要执行一组语句时,则必须将这一组语句用{}括起来起来形成复合语句,但在“}”之后不能再加括号。注意,复合语句中的语句执行时会全部被执行。
例4.11

 

4.3.2if语句的嵌套
一个if语句中又包含一个或多个if语句的现象称为if语句的嵌套。
if语句的基本形式:
if(表达式)
语句1;
else
语句2;
其中“语句1”或“语句2”都可以嵌套另一个if语句,在缺省else部分的if语句中的“语句”,也可以嵌套另一个if语句。因此,具体嵌套形式可以有很多种。
在C语言中规定其对应原则是:else总是与它前面最近的一个未匹配的if相匹配。
例4.12

 

 

 

 例4.13

 

4.3.3多分支if语句
多分支if语句是最常用的实现多路分支的方法,其一般形式如下:
if(表达式1)
语句1;
if(表达式2)
语句2;
if(表达式n-1)
语句n-1;
else
语句n;

首先求解表达式1,如果表达式的值为“真”,则执行语句1,并结束整个if语句的执行;否则,求解表达式2,…,若表达式1至表达式n-1的值都为“假”时,执行语句n。
例4.14

 

 


例4.15

 

 

 

 

4.4使用switch语句实现分支结构,在C语言中还提供了一种switch语句也可以实现多分支的选择。
其语句的一般形式如下:
switch(表达式)

case常量表达式1:语句1;break;
case常量表达式2:语句2;break;

case常量表达式n:语句n;break;
default:语句n+1;break;

switch语句执行结果其执行过程为:首先计算switch后面括号内的表达式,然后将表达式的值从上到下按顺序与各个case后面的常量表达式的值进行比较,若与某个常量表达式的值相等,则执行该常量表达式后面的语句,然后执行break语句,跳出switch语句,switch语句执行结束;如果表达式的值与任何一个常量表达式的值都不相等,则执行default后的语句,结束语句switch的执行。
关于switch语句的几点说明:
(1)switch后的表达式可以是任意表达式,其值只能为整形、字符型、枚举型之一。
(2)每个case后面的常量表达式的值互不相同,否则就会出现互相矛盾的现象。
(3)各个case和default的出现次序不影响执行结果。
(4)可以让多个case共用一组执行语句。
(5)switch语句允许嵌套使用。
1.在switch语句格式中的每个语句后面都使用break语句
例4.16

 

2.在switch语句格式中的部分语句后面使用break语句
例4.17

 

 例4.18

 

 

 

3.在switch语句格式中不使用break语句
switch语句中不使用break语句时,程序在执行相应语句后,不会跳出正在执行的switch语句,而会继续执行其后的所有语句。
4.5分支结构程序设计示例
例4.19

 

 例4.20

 

 

 例4.21


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值