资源描述:
《第4章 选择结构程序设计【C语言程序设计】》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、4选择结构程序设计第4章【本章导读】选择结构是结构化程序中基本结构之一。选择结构是根据判定所给条件是否满足,从而决定程序执行哪些语句。C语言中,通常用if语句或switch语句来实现选择结构。本章主要介绍关系运算符与关系表达式、逻辑运算符与逻辑表达式、if语句、switch语句。通过本章节的学习,读者要掌握关系表达式和逻辑表达式的组成及运算,理解分支程序设计的概念,掌握if语句、switch语句的基本结构及执行过程,理解if语句的嵌套概念,能正确选择分支结构进行程序设计。选择结构程序设计§4.14.1.1关系运算符<小于<=小于或等于>大于>=大于或等于==等于!=等于优先
2、级和结合性:关系运算符的优先级低于算术运算符,关系运算符中>、>=、<、<=优先级相同;==和!=的优先级低于前四种。结合性:左结合关系运算符与关系表达式4.1.1关系运算符都是双目运算符,要求两个操作数是同一种数据类型,其结果为逻辑值。按C语言的习惯,值为真(true)时用非0值(一般用1)表示;值为假(false)时用0表示。关系运算符4.1.2关系表达式是用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等表达式)连接起来的式子。例如:3+2==2*3;表示判断3+2的结果和2*3的结果是否相等关系表达式的一般形式为:表达式
3、关系运算符表达式关系表达式§4.24.2.1逻辑运算符&&与运算
4、
5、或运算!非运算其中,与运算符&&和或运算符
6、
7、均为双目运算符,非运算符!为单目运算符逻辑运算符与逻辑表达式a&&b当且仅当a,b都为真时,结果为真a
8、
9、b当且仅当a,b都为假时,结果为假!a当a为真时,结果为假;当a为假时,结果为真逻辑运算的真值表表4.1ab!a!ba&&ba
10、
11、b真真假假真真真假假真假真假真真假假真假假真真假假4.2.2优先级:逻辑运算符中,非运算符(!)和单目的算术运算符同级,高于双目的算术运算符,优先于关系运算符,优先于逻辑运算符与(&&)和或(
12、
13、)a>b
14、
15、c>d等价于(a>b)
16、
17、
18、(c>d)!a==b&&c>d等价于((!a)==b)&&(c>d)结合性:逻辑运算符中,非运算符(!)的结合性为右结合;与运算(&&)和或运算(
19、
20、)的结合性为左结合。逻辑运算符的优先级和结合性4.2.3逻辑表达式类似于关系表达式,是用逻辑运算符把两个表达式连接起来的式子。例如:a+b&&a;表示判断a+b和a的值是否为真,若都为真表达式为真逻辑表达式的一般形式为:表达式逻辑运算符表达式逻辑表达式【例4-1】分析下面程序段的运行结果/*EX4-1.C*/main(){inta=14,b=15,x;charc='A';x=(a&&b)&&(c<'B');printf("
21、a=%d,b=%d",a,b);printf("x=%d",x);}【注意】由于&&和
22、
23、运算的左结合性及运算特点,若&&运算符左边的表达式为假(或0),则其右边的表达式将不再运算,整个表达式的值必然为假;同理,若
24、
25、运算符左边的表达式为真(或非0值),则其右边的表达式将不再运算,整个表达式的值必然为真。例如:a=0&&b=b-1由于表达式a=0的值为0,因此&&运算符右边的式子将不再运算(即b的值不变),整个逻辑表达式的值为0。同理:a=1
26、
27、b=b-1由于表达式a=1的值为1,因此
28、
29、运算符右边的式子将不再运算(即b的值不变),整个逻辑表达式的值为1。逻辑运算符的“短路
30、”现象§4.3【问题】我们在求解数学问题中常会遇到这样的问题:计算一个分段函数:y=0x<=01x>0单分支if语句双分支if语句多分支选择结构if语句4.3.1单分支if语句的基本形式为:if(表达式)语句;其语义是:首先判断表达式的值是否为真,若表达式的值非0,则执行其后的语句;否则不执行该语句单分支if语句4.3.1/*EX4-2.C*/main(){floata;printf("pleaseinputthescore:");scanf("%f",&a);if(a>=60)printf("pass");}【例4-2】从键盘输入学生成绩并判断是否及格,若及格输出“p
31、ass”表达式语句非00单分支if语句控制流程双分支if语句4.3.2双分支if语句为if-else形式,语句的结构为:if(表达式)语句1;else语句2;其语义是:当表达式的值为真,则执行语句1,否则执行语句2双分支if语句的控制流程非0表达式语句1语句204.3.2/*EX4-3.C*/main(){inta,b;printf("inputthetwonumbers:");scanf("%d,%d",&a,&b);if(a>b)printf("max=%d",a);elseprintf(""max=%d