预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共34页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章选择结构程序设计5.1关系运算及其表达式2.优先级 (1)在关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。 (2)与其它种类运算符的优先级关系 关系运算符的优先级,低于算术运算符,但高于赋值运算符。 5.1.2关系表达式 1.关系表达式的概念 所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。 例如,下面的关系表达式都是合法的: a>b,a+b>c-d,(a=3)<=(b=5),'a'>='b',(a>b)==(b>c) 2.关系表达式的值——逻辑值(非“真”即“假”)。 由于C语言没有逻辑型数据,所以用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。例如,假设num1=3,num2=4,num3=5,则: (1)num1>num2的值=0。 (2)(num1>num2)!=num3的值=1。 (3)num1<num2<num3的值=1。 思考题:任意改变num1或num2的值,会影响整个表达式的值吗?为什么? (4)(num1<num2)+num3的值=6,因为num1<num2的值=1,1+5=6。 再次强调:C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。 5.2逻辑运算及其表达式例如,下面的表达式都是逻辑表达式: (x>=0)&&(x<10),(x<1)||(x>5),!(x==0), (year%4==0)&&(year%100!=0)||(year%400==0) (2)运算规则 1)&&:当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。 2)||:当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”。 3)!:当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。 例如,假定x=5,则(x>=0)&&(x<10)的值为“真”,(x<-1)||(x>5)的值为“假”。2.逻辑运算符的运算优先级 (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即: !(非)→&&(与)→||(或) (2)与其它种类运算符的优先关系 !→算术运算→关系运算→&&→||→赋值运算 5.2.2逻辑表达式 1.逻辑表达式的概念 所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。 例如,(year%4==0)&&(year%100!=0)||(year%400==0)就是一个判断一个年份是否是闰年的逻辑表达式。逻辑表达式的值也是一个逻辑值(非“真”即“假”)。 2.逻辑量的真假判定──0和非0 C语言用整数“1”表示“逻辑真”、用“0”表示“逻辑假”。但在判断一个数据的“真”或“假”时,却以0和非0为根据:如果为0,则判定为“逻辑假”;如果为非0,则判定为“逻辑真”。 例如,假设num=12,则:!num的值=0,num>=1&&num<=31的值=1,num||num>31的值=1。 3.说明 (1)逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其它任何类型的数据,如实型、字符型等。(2)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。换句话说: 1)对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数。 2)对于逻辑或运算,如果第一个操作数被判定为“真”,系统不再判定或求解第二操作数。 例如,假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1,则求解表达式“(x=n1>n2)&&(y=n3>n4)”后,x的值变为0,而y的值不变,仍等于1! 5.3if语句和条件运算符程序运行情况如下:Pleaseinputthreenumbers:11,22,18↙ Thethreenumbersare:11,22,18 max=22 本案例中的第1个if语句,可优化为如下不带else子句的形式: max=num1; if(num2>max)max=num2; 这种优化形式的基本思想是:首先取一个数预置为max(最大值),然后再用max依次与其余的数逐个比较,如果发现有比max大的,就用它给max重新赋值,比较完所有的数后,max中的数就是最大值。这种方法,对从3个或3个以上的数中找最大值的处理,非常有效。请读者仔细体会。[例5.2]输入任意三个数num1、num2、num3,按从小到大的顺序排序输出。 main() {intnum1,num2,num3,temp; printf("Pleaseinputthreenumbers:");