您好,欢迎访问三七文档
第6讲关系、逻辑运算符及其表达式和if语句教学目的与要求:掌握关系、逻辑运算符及其表达式的使用掌握if语句的三种格式及其各自的执行流程教学内容提要:1、关系运算符及其表达式2、逻辑运算符及其表达式3、if语句教学重点:三种格式的if语句教学难点:三种格式的if语句教学进度:教材P89~P102教学过程:关系运算:比较运算,比较两个操作数,看是否满足给定的关系。1)关系运算符:小于,53,35=:小于等于,5=3,3=5,与数学上(≤)不同:大于,53,35=:大于等于,5=3,3=5,与数学上(≥)不同==:等于,5==3,与数学上(=)不同!=:不等于,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=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”会与原来的意义不同。假设a=0;b=0.5。若x=0.3,判别x是否在[a,b]范围内:若写成:a<=x<=b×应写成:a<=x&&x<=b1)逻辑运算符!:逻辑非,一元运算符运算规则:取反,真假,假真&&:逻辑与。又称逻辑乘。运算规则:两个操作数均为真,结果为真。||:逻辑或。又称逻辑加。运算规则:只要两个操作数有一个为真,结果为真。2、逻辑运算符及其表达式2)逻辑量或逻辑表达式的值非0值:真0值:假整型实型字符型指针类型00.0\0NULL3)逻辑表达式用逻辑运算符将表达式连接起来的式子。优先级关系运算符&&逻辑与算术运算符!逻辑非||逻辑或结合性:!:自右向左&&、||:自左向右高低赋值运算符高低高低高低高低例2:inta=5;floatb=3.5;!a0!b0a&&b1a||b1!a&&!b0注意:在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行并运算的,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。!a&&b||xy&&ca>b&&xya==b||x==y!a||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的值。只要a为假,就不必判断b和c,运算立即中止。5)a||b||c求解方法:只要a为真(非0),就不必判断b和c;只有a为假,才判断b;a和b都为假,才判断c。例4:a=0;b=1;c=2;d=a++||b++||--c;d=(a++)||(b++)||(--c);运算结果:d=1,a=1,b=2,c=2例如5>3&&2||8<4-!0值?问题提出:计算分段函数:y=3-xx≤02/xx0解题的步骤:输入xx≤0是y=3-xy=2/x否输出y的值C语言用来设计条件选择结构程序的选择语句有两种:if语句、switch语句。3、if语句1)单分支选择if语句语句形式:if(表达式)语句;例:if(xy)printf(“%d”,x);语句执行流程:表达式语句真(非0)假(0)if语句的三种形式:单分支选择if语句、双分支选择if语句、多分支选择if语句。例5:从键盘输入两个整数a和b,如果a大于b则交换两数,否则不交换,最后输出两个数。#includestdio.h输入a,bab交换a、b输出结束真假main(){inta,b,t;scanf(%d,%d,&a,&b);if(ab){t=a;a=b;b=t;}printf(a=%d,b=%d\n,a,b);}注意:(1)if语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号{}将需要执行的多个语句括起,形成一个复合语句。(2)if语句中表达式形式很灵活,可以是常量、变量、任何类型表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。2)、双分支选择if语句语句形式:if(表达式)语句1;else语句2;语句执行流程:表达式语句1真(非0)假(0)语句2例:If(xy)printf(“%d”,x);elseprintf(“%d”,y);注意:if和else语句之间只能有一个语句,当if-else之间的语句不只一句时,应用一对{}将语句括起。例:if(ab)a++;b++;elsea=0;b=10;改正:if(ab){a++;b++;}elsea=0;b=10;改正:if(ab){a++;b++;}else{a=0;b=10;}例6:输入两个整数,输出其中较大的数。#includestdio.h#includemath.hmain(){intx,y,max;scanf(%d,%d,&x,&y);if(xy)max=x;elsemax=y;printf(max=%d\n,max);}输入x,yxymax=x输出最大值结束真假max=y例7:输入三角形的三个边长,求出三角形的面积。#include”math.h”main(){floata,b,c;floatarea,s;/*s为三角形的半周长*/printf(“请输入三角形的三边a,b,c:”);scanf(“%f%f%f”,&a,&b,&c);if(a+bc&&a+cb&&b+ca)/*判断输入的a,b,c能否构成三角形*/{s=(a+b+c)/2.0;/*求出三角形的半周长*/area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“三角形面积area=%f”,area);}elseprintf(“不能构成三角形\n”);}3)、多分支选择if语句语句形式:if(表达式1)语句1;elseif(表达式2)语句2;……elseif(表达式n)语句n;else语句n+1;语句执行流程:真(非0)假(0)表达式1语句1语句2表达式2真(非0)表达式2语句n语句n+1假(0)假(0)例8:计算分段函数。x5x1y2x1x103x10x10假输入xX=1真X10y=3/(x-10)y=2xy=x+5假真#includestdio.hmain(){floatx,y;printf(enterx:);scanf(%f,&x);else{if(x=1)y=x+5;elseif(x10)y=2*x;elsey=3/(x-10);printf(x=%f,y=%f\n,x,y);}计算分段函数程序:if(x==10)printf(notdefinex.\n);}注意:(1)当if语句中出现多个“if”与“else”的时候,要特别注意它们之间的匹配关系,否则就可能导致程序逻辑错误。“else”与“if”的匹配原则是“就近一致原则”,即“else”总是与它前面最近的“if”相匹配。(2)if语句中条件的写法应尽量简单。小结:1、关系运算符及其表达式的使用2、逻辑运算符及其表达式的使用3、if语句的三种格式及其各自的执行流程作业:P1123,4
本文标题:c语言教案第6讲
链接地址:https://www.777doc.com/doc-3377435 .html