资源描述:
《第4章选择结构》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第四章选择结构(00:51:43)程序实例问题:求解一元二次方程ax2+bx+c=0的根。程序演示:通过C语言程序可以很容易求岀。#includeumath.h”main(){floata,b,c;floatdlt,xl,x2;printf(4tpleaseinputa,b,c:“);scanf("%f,%f,%f",&a,&b,&c);dlt=b*b-4*a*c;if(dlt<0)printf(uNorealrootn);else{if(dlt>0){x1=-b/(2*a)+sqrt(dlt)/(2*a);X2=~b/(2*a)-sqrt(dlt)/(
2、2*a);}elsexl二x2二-b/(2*a);printfx2=%f”,xl,x2)一、关系运算和逻辑运算先来看关系运算和逻辑运算,因为分支结构要判断和比较,所以我们先学两个运算符。先看关系运算符。开头程序中的dlt>0就是关系表达式关系运算符有>二、>、<^<二、=二和!二。>二、>、<^〈二和我们数学里用的一样,但二二和我们之前数学学的不一样,它用我们数学里两个等于号表示。一个等于号,在C语言里表示赋值号。!二用一个感叹号加一个赋值号表示,这个要注意。那关系运算符的优先级处于什么级别呢。首先算术运算符,数学里的“+、-、*、/”运算符,都比关系运
3、算符里的优先级要高。关系运算符优先级里面,其中等于(==)和不等于(!=)优先级是最低的。我们通过例子,來进一步了解一下关系运算符。【例】设变量定义如卜:intnl=l,n2=2,n3=3;求n3>n2>nl的结果。nl的初始值是1,n2的初始值是2,n3的初始值是3。从数学上来看,3>2>1,在我们看来,这是一个非常正确的表达式,3>2>1肯定成立。但是完全不一样,这是数学上的表示,在C语言中不是这样计算的。C语言中n3>n2结果为1n3>n2>nl结果为0,该式相当于“(n3>n2)>nl”°先计算“n3>n2”,结果为“1”(真);再计算“l>nl
4、”的结果是“0”(假)。整表达式的值为0。[特别注意,与数学上的3>2>1含义不同]。注意,关系运算的结果,要么是0,要么是1;如果关系运算成立,结果是1;如果不成立结果是0。这个关系表达式,1.关系运算符(>二、>、〈、<=、==>!=)说明:关系运算符的优先级如下:算术运算符优先于关系运算符〈、<=x>、>=优先于二二、!=【例】设变量定义如下:intnl=l,n2=2,n3=3;n3>n2结果为1n3>n2>nl结果为0该式相当于“(n3>n2)>nl”。先计算“n3>n2”,结果为“1”(真);再计算“l>nl”的结果是“0”(假)。[特别注意,
5、与数学上的3>2>1含义不同]。注意,关系运算的结果,要么是0,要么是1;如果关系运算成立,结果是1;如果不成立结果是0。这个关系表达式,历年真题1・以下选项中,当x为大于1的奇数时,值为0的表达式()A.x%2==1(真1)B.x/2(=1)C.x%2!=0(真1)D.x%2==0(假0)答案:Do本题考查的是表达式的计算。当x为大于1的奇数时,选项A中,x%2的值一定是b则表达是x%2==l的值为1;选项B中x/2的值为1;选项C中,x%2的值一定是1,则表达式x%2!=0的值为1;选项D中x%2==0的值为0。2.逻辑运算符(&&丨
6、!)逻辑运算主
7、要是与、或、非三个运算。其中“与”运算比较简单,两个数相与,只有两个数都不为0,或两个数都不为假的时候,结果才是真。“或”运算只要一个不为0,或一个为真,结果就为真。为是一个合法的表达式,就存在真或者假。真,逻辑值是1,假,逻辑值是0。逻辑运算符的运算规则aba&&ba
8、
9、b!a0(假)0(假)0(假)0(假)1(真)0(假)非0(真)0(假)1(真)非0(真)0(假)0(假)1(真)0(假)说明:(1)逻辑运算的结果是整型数据0或1。没有真、假;或成立不成立(2)逻辑运算符的优先级如下:!优先于双目算术运算符优先于关系运算符优先于&&优先于
10、丨关于逻辑
11、运算,大家要注意,这是一个重要考点,每年都有题出现。(3)用&&对两个表达式进行计算时,若第一个表达式的值为“假”,则运算结果与第二个表达式的值无关,结果肯定为“假”,所以C语言规定此时第二个表达式将不再计算。同样用
12、
13、对两个表达式进行计算时,若第一个表达式的值为“真”,则运算结果与第二个表达式的值无关,结果肯定为“真”,所以C语言规定此时第二个表达式也不再计算。例如定义a为整型变量,贝lj0&&(a++)的运算结果为0,a值不变;1
14、
15、(a++)的运算结果为1,a值也不变。历年真题1.以下关于逻辑运算符两侧运算对象的叙述中正确的是()A.只能是整数0或
16、1B.只能是整数0或非0的整数(也可是小数等)C.可以是结构体类型的数据D.可是