第4章 选择结构程序设计
4.1本章导学
一、教学目标
1.掌握关系运算符和逻辑运算符。
2.理解C语言中真与假的概念。
3.学会正确书写关系表达式和逻辑表达式。
4.能够区分关系等于运算符和赋值运算符。
5.掌握根据各种运算符的优先级计算表达式的值。
6.熟练掌握三种if语句和switch语句。
7.掌握选择结构的嵌套。
二、知识要点
1.关系运算符及表达式
表4.1 关系运算符
关系运算符优先级结合性>、 >=、
(2)在C语言中,“=”表示赋值,“==”表示比较等于。
(3)用关系运算符将两个操作数连接起来符合C语言语法规则的式子叫关系表达式。如:a+b>c+d,(a=9)!=(b>c)等。
(4)关系表达式的值为逻辑值,即“真”或“假”,在C语言中以1表示为真,以0表示假。如 9>8,值为1(真);8>9,值为0(假);设a=2,b=3,c=4,则a>b!=c相当于(a>b)!=c,值为1(真)。
2.逻辑运算符及表达式
表4.2 逻辑运算符
逻辑运算符含义结合性!逻辑非自左至右&&逻辑与自左至右||逻辑或自左至右(1)“!”为单目运算符,要求只能有一个操作数,如!a,运算结果是非0为真,0为假。
(2)“&&”和“||”为双目运算符,要求有两个操作数。
(3)三种逻辑运算符的优先级由高到低依次为:!、&&、||;
(4)“&&”运算,当两个操作数均为非0(真)时,结果为1(真),否则结果为0(假);
(5)“||”运算,当两个操作数均为0(假)时,结果为0(假),否则结果为1(真);
(6)在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行;
例:
a&&b&&c,只有a为真时才需要判断b的值,只有a和b都为真时才需要判断c的值;
a||b||c,只要a为真时就不必判断b和c的值,只有a为假时才判断b的值,a和b都为假时才判断c的值。
(7)在C语言中,0
假设x=-1,按照优先级及结合性,应先计算0
3.条件表达式
表达式1 ?表达式2 :表达式3
(1)当表达式1的值为非0时,条件表达式的值是表达式2的值,当表达式1的值为0时,条件表达式的值是表达式3的值。
例:
max=2>3?2:3;由于2>3不成立,所以 max的值为3。
(2)条件表达式的结合性为自右至左。
如:a>b?a:b>c?b:c等价于a>b?a:(b>c?b:c)
4.各运算符的优先级
表4.3 部分运算符优先级
运算符!算术运算符关系运算符&&||条件运算符赋值运算符逗号运算符优先级高————————————————————?低例:
(1)4 && 0 || 2+1,值为1(真);
(2)设a=3,b=4,c=5,则
a-b
!a>b/3&&c%2!=1 等价于((!a)>(b/3))||((c%2)!=1),值为0(假)。
5.在C语言中,用if实现选择结构,if 语句有以下三种最常用的格式:
(1)单分支
if (表达式) 语句
if(x>y) printf(“%d”,x);
(2)双分支
if (表达式)
语句1
else
语句2
if (x>y)
printf(“max=%d”,x);
else
printf(“max=%d”,y);
(3)多分支
if(表达式1 ) 语句1
else if(表达式2 ) 语句
……
else if(表达式m) 语句
else语句m+1
例:
if(n>=90 ) g=‘A’;
else if(n>=80 ) g=‘B’;
else if(n>=70 ) g=‘C’;
else if(n>=60 ) g=‘D’;
elseg=‘f’;
6.选择结构的嵌套
在if中又包含一个或多个if语句称为if语句嵌套。
if(表达式1 )
if( 表达式2) 语句块1
else 语句块2
else
if(表达式3 ) 语句块3
else 语句块4
(1)在if语句嵌套中,if与else既可以成对出现,也可以不成对出现;
(2)else与if的配对原则是:else总是