资源描述:
《程序控制结构选择结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、选择结构本讲内容:关系运算和逻辑运算(2)单分支结构(3)双分支结构3.1关系运算和逻辑运算一、关系运算符>>=<<===!=1.不同运算符之间的优先级2.关系运算符之间的优先级低于算术运算符,高于赋值运算符①{==,!=}的优先级相同,{>,>=,<,<=}优先级相同②{==,!=}的优先级低于{>,>=,<,<=}的优先级3.结合性:左结合性二、关系表达式:用关系运算符连接起来的式子关系表达式的值只有2个,1表示真,0表示假1>2值为6<10值为1>2==0值为3.1关系运算和逻辑运算如:假0真1注意:(1)字符数据按其ASCII码值
2、进行比较'a'>'b'值为如:97>98013.1关系运算和逻辑运算(2)应避免2个实数作==或!=的比较floata=1.23456789;floatb=1.23456788;intc;c=a==b;如:结果:c=1Why?精度问题!(3)5>2>7>8是允许的,它相当于((5>2)>7)>8(4)可以将关系表达式看成是一种整型表达式c=(a==b);三、逻辑运算符!&&
3、
4、3.1关系运算和逻辑运算1、3个运算符的优先级由高到低为:!&&
5、
6、2、!的优先级高于关系运算,&&和
7、
8、的优先级低于关系运算。3、!是右结合性,&&和
9、
10、是左
11、结合性,四、逻辑表达式例:使用逻辑表达式表示x∈[-1,1]区间3.1关系运算和逻辑运算1.逻辑表达式的值只有2个:真,假进行判断时,非零值代表“真”,零值代表“假”(x>=-1)&&(x<=1)3012、
13、x<-100例:如何表述“2020&&x<30)
14、
15、x<-100x>20&&x<30
16、
17、x<-100x>=-1&&x<=1ab!aa&&ba
18、
19、b00100非000010非0101非0非0011逻辑运算规则表2、逻辑运算中的规律3.1关系运算和逻辑运算(2)类似有1
20、
21、a==1(1)在&&表
22、达式中,若左端为0,则不必再计算右端,表达式值为0即:0&&a==0规律:0
23、
24、a==a0&&a==01
25、
26、a==11&&a==aa
27、
28、a==aa&&a==aa
29、
30、!a==1a&&!a==0!(a
31、
32、b)==!a&&!b!(a&&b)==!a
33、
34、!b3.1关系运算和逻辑运算例:a=1,b=2,c=3,d=4,m=n=1;(m=a>b)&&(n=c>d);printf("m=%d,n=%d",m,n);结果:m=0,n=1(m=(a>b))&&(n=c>d)(m=0)&&(n=c>d)0&&(n=c>d)0例:x=y=z=0;++x
35、
36、++
37、y&&++z;printf("%d,%d,%d",x,y,z);(++x)
38、
39、((++y)&&(++z))1
40、
41、((++y)&&(++z))++x
42、
43、++y&&++z;1结果:1,0,0(m=a>b)&&(n=c>d)3.1关系运算和逻辑运算例:x=y=z=-1;++x&&++y
44、
45、++z;printf(“%d,%d,%d”,x,y,z);结果:0,-1,0++x&&++y
46、
47、++z;((++x)&&(++y))
48、
49、(++z)(0&&(++y))
50、
51、(++z)0
52、
53、(++z)0
54、
55、0++y不进行运算++z进行运算3.2.1单分支结构1
56、、语法形式:if(表达式)语句;2、执行过程:先计算表达式的值,若为真(非0值),则执行其后的语句,若值为0,则继续向下执行语句真假PPA真(非0)假(0)3、常见的错误(1)if(x>0);y=3*x+2;(2)if(x=2)printf(“x>0”);(3)if(1<=x<=10)y=x-1;空语句!赋值语句!(1<=x)<=10x=100(1<=100)<=101<=101表达式的值为真3.2.1单分支结构例3-1:输入2个实数,按由小到大的顺序输出#includevoidmain(){floata,b,t;pri
57、ntf("inputa,b:");scanf("%f%f",&a,&b);if(a>b)t=a;a=b;b=t;printf("%.2f,%.2f",a,b);}输入a,bt=aa>b?输出a,b真假a=bb=t3.2.1单分支结构if(a>b){t=a;a=b;b=t;}括号不能省略!例3-2:输入3个实数,按由小到大的顺序输出输入x1,x2,x3输出x1,x2,x3x1>x2?x1x2真假x1>x3?x1x3真假x2>x3?x2x3真假#includevoidmain(){floatx1,x2,x3,
58、temp;scanf("%f%f%f",&x1,&x2,&x3);if(x1>x2){temp=x1;x1=x2;x2=temp;}printf("%.2f,%.2f,%.2f",x1,x