资源描述:
《c语言教案第6讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6讲关系、逻辑运算符及其表达式和if语句教学目的与要求:掌握关系、逻辑运算符及其表达式的使用掌握if语句的三种格式及其各自的执行流程教学内容提要:1、关系运算符及其表达式2、逻辑运算符及其表达式3、if语句教学重点:三种格式的if语句教学难点:三种格式的if语句教学进度:教材P89~P102教学过程:关系运算:比较运算,比较两个操作数,看是否满足给定的关系。1)关系运算符<:小于,5<3,3<5<=:小于等于,5<=3,3<=5,与数学上(≤)不同>:大于,5>3,3>5>=:大于等于,5>=3,3>=5,与数学上(≥)不同==:等于,5==3,与数学上(=)不同!=:
2、不等于,5!=3,与数学上(≠)不同1、关系运算符及其表达式C语言中,真:非0值;假:0值2)关系表达式用关系运算符将表达式连接起来的式子优先级<<=>>===!=结合方向:自左向右表达式的值关系成立,即为真,结果为1;关系不成立,即为假,结果为0;算术运算符例1判断下列关系表达式的结果:(a=2*2)==2X=(1+1)==28<=101!=2高低高低高低赋值运算符注意以下几种情况:(1)表达式5>2>7>8在数学上是不允许的,而在C中是允许的。按自左而右的结合求解:(2)由于关系表达式的值是整型数0或1,故也可以将其看成是一种整型表达式。例如,若有:inti=1,j=
3、7,a;a=i+(j%4!=0);由于j%4的值为3,而3!=0的值为1(真),故a的值为2。但这种表达式的含义不易被理解,初学时不宜多用。(3)字符数据的比较按其ASCII码值进行例如:‘A’>’a’‘0’>0‘A’>100(4)在判定两个浮点数是否相等时,由于存储上的误差,会得出错误的结果。例如:1.0/3.0*3.0==1.0所以应避免对两个实数表达式作“相等”或“不相等”的判别。上式可改写为:fabs(1.0/3.0*3.0-1.0)<1e-5(5)要表示x在区间[a,b]中,在数学中使用表达式a≤x≤b。但在C语言中使用表达式“a<=x<=b”会与原来的意义不同
4、。假设a=0;b=0.5。若x=0.3,判别x是否在[a,b]范围内:若写成:a<=x<=b×应写成:a<=x&&x<=b1)逻辑运算符!:逻辑非,一元运算符运算规则:取反,真假,假真&&:逻辑与。又称逻辑乘。运算规则:两个操作数均为真,结果为真。
5、
6、:逻辑或。又称逻辑加。运算规则:只要两个操作数有一个为真,结果为真。2、逻辑运算符及其表达式2)逻辑量或逻辑表达式的值非0值:真0值:假整型实型字符型指针类型00.0 NULL3)逻辑表达式用逻辑运算符将表达式连接起来的式子。优先级关系运算符&&逻辑与算术运算符!逻辑非
7、
8、逻辑或结合性:!:自右向左&&、
9、
10、:自左向右高低
11、赋值运算符高低高低高低高低例2:inta=5;floatb=3.5;!a0!b0a&&b1a
12、
13、b1!a&&!b0注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行并运算的,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。!a&&b
14、
15、x>y&&ca>b&&x>ya==b
16、
17、x==y!a
18、
19、a>b例3:a=0;b=1;c=2;d=a++&&b++&&--c;d=(a++)&&(b++)&&(--c);运算结果:d=0,a=1,b=1,c=24)a&&b&&c求解方法:只有a为真(非0),才需要判断b的值,只有a和b都为真,才需要判断c的值。只要
20、a为假,就不必判断b和c,运算立即中止。5)a
21、
22、b
23、
24、c求解方法:只要a为真(非0),就不必判断b和c;只有a为假,才判断b;a和b都为假,才判断c。例4:a=0;b=1;c=2;d=a++
25、
26、b++
27、
28、--c;d=(a++)
29、
30、(b++)
31、
32、(--c);运算结果:d=1,a=1,b=2,c=2例如5>3&&2
33、
34、8<4-!0值?问题提出:计算分段函数:y=3-xx≤02/xx>0解题的步骤:输入xx≤0是y=3-xy=2/x否输出y的值C语言用来设计条件选择结构程序的选择语句有两种:if语句、switch语句。3、if语句1)单分支选择if语句语句形式:if(表达式)
35、语句;例:if(x>y)printf(“%d”,x);语句执行流程:表达式语句真(非0)假(0)if语句的三种形式:单分支选择if语句、双分支选择if语句、多分支选择if语句。例5:从键盘输入两个整数a和b,如果a大于b则交换两数,否则不交换,最后输出两个数。#include输入a,ba>b交换a、b输出结束真假main(){inta,b,t;scanf("%d,%d",&a,&b);if(a>b){t=a;a=b;b=t;}printf("a=%d,b=%d",a,b);}注意:(1)if语句自动结合一