资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,1,THE SCHOOL OF SOFTWARE ENGINEERING OF HUST,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第三章 C程序的流程控制,C,语言的结构,C,语言的三大结,构,构:顺序结构,、,、选择结构和,循,循环结构,S1,S2,S3,(,a,)顺序结构,P,S1,S2,真,假,(,b,)选择结构,P,S2,假,真,(,c,)循环结构,本章内容提要,判断,选择型程序设计,3.1,3.2,循环型程序设计,3.3,综合应用,3.4,本章小结,3.5,思考题,3.6,本节知识点,C,语言中的逻辑值,1,关系运算符与关系表达式,2,逻辑运算符与逻辑表达式,3,ifelse,结构的应用,4,if-else if,结构的应用,5,if,语句的嵌套应用,6,重点,关系和逻辑运算,1,if,语句的应用,2,难点,前面学过的运,算,算符和表达式,?,?,比较?,并且?,判断是针对命,题,题的“真”、,“,“假”进行的,。,。,3.1.1,命题的“真”,、,、“假”与,C,语言中的逻辑,值,值,例如,下面一,些,些命题:,1,、小强是个大,学,学生,2,、今天下雨了,3,、,a3,4,、,abc,5,、,a5,或,c4,关系表达式和,逻,逻辑表达式是,C,语言中描述命,题,题的两种基本,形,形式,关系运算是逻,辑,辑运算中比较,简,简单的一种,,“,“关系运算”,就,就是“,比较运算”,,指,指对两个表达,式,式值的大小比,较,较。,3.1.2,关系运算符,C,语言中提供有,如,如下,6,个关系运算符,:,:,,,=,,,=,,,=,,,!=,例,3.1,a3,int a=5;,int a=2;,结果为真(,T,rue,),结果为假(,F,alse,),3.1.2,关系表达式,用关系运算符,将,将两个表达式,(,(算术、关系,、,、逻辑、赋值,表,表达,式等)连接起,来,来所构成的表,达,达式,称为关,系,系表达式。,例,3.2,:,c,a,b,a,b=c,a=b,c,a=b,c,等效于,c,(a,b),等效于,(a,b)=c,等效于,a=(b,c),等效于,a=(b,c),1,、表达式,5,2,7,8,在数学上允许,否,否,?,在,C,中是否允许,?,关系表达式注,意,意问题:,按自左而右的,结,结合求解:,5,2,值为,1,;,1,7,值为,0,;,0,8,的值为,0,。,即整个关系表,达,达式的值为,0,。,2,、由于关系表,达,达式的值是整,型,型数,0,或,1,,故也可以将,其,其,看成是一种整,型,型表达式。例,如,如,若有:,int i=1,j=7,a;,a=i+(j%4!=0);,关系表达式注,意,意问题:,这种表达式的,含,含义不易被理,解,解,初学时不,宜,宜多用,3,、在判定两个,浮,浮点数是否相,等,等时,由于存,储,储上的误差,,会,会,得出错误的结,果,果。例如:,1.0/3.0*3.0=1.0,关系表达式注,意,意问题:,该关系表达式,的,的值为,0(,假,),,并不为,1(,真,),。所以应避免,对两个实数表,达,达式作“相等,”,”或“不相等,”,”的判别。,上式可改写为,:,:,fabs(1.0/3.0*3.0-1.0),1e-5,fabs,是求绝对值函,数,数。只要,1.0/3.0*3.0,与,1.0,之间的差小于,10,-5,(,或一个其它的,很,很小的数,),,就认为,1.0/3.0*3.0,与,1.0,相等。,4,、要表示,x,在区间,a,b,中,在数学,中,中使用表达式,axb,可否,?,在,C,语言中使用表,达,达式“,a,=x,=b”,可否?,关系表达式,注,注意问题:,假设,a=0;b=0.5,。若,x=0.3,上式可改写,为,为:,a,=x,并且,x,=b,3.1.3,逻辑运算符,与,与逻辑表达,式,式,A,B,B,A,A,(,a,)“与”,(,b,)“或”,(,c,)“非”,三个基本逻辑运算,3.1.3,逻辑运算符,C,语言提供三种逻辑运算符:,1,、,&,逻辑与(相当日常生活中:而且,并且,只在两条,件同时成立时为“真”),2,、,|,逻辑或(相当日常生活中:或,两个条件只要有一个,成立时即为“真”),3,、,!,逻辑非(条件为真,运算后为假,条件为假,运算后,为真),3.1.3,逻辑表达式,用逻辑运算,符,符(逻辑与,、,、逻辑或、,逻,逻辑非)将,关,关系表达式,或逻辑量连,接,接起来构成,逻,逻辑表达式,。,。,例,3.3,:,ab&xy,a=b|x=y,!,a|ab,等效于(,ab,),&,(,xy,),等效于,(a=b)|(x=y),等效于,(,!,a)|(ab),1,、在逻辑表,达,达式的求解,中,中,并不是,所,所有的逻辑,运,运算符都被,执,执行,,只是在必,须,须执行下一,个,个逻辑运算,符,符才能求出,表,表达式的解,时,时,,才执行该运,算,算符。,a&b&ca|b|c,逻辑表达式,注,注意问题:,例,3.4,:,如果,a,,,b,,,c,,,d,,,m,,,n,分别为:,1,2,3,4,1,1,分析整个表,达,达式,(m=ab)&(n=cd),结果和,m,n,的结果。,2,、如果在一,个,个表达式中,不,不同位置上,出,出现数值,,应,应区分哪些,是,是作,为数值运算,或,或关系运算,的,的对象(原,值,值),哪些,是,是作为逻辑,运,运算,的对象(逻,辑,辑值)。,逻辑表达式,注,注意问题:,例,3,.5,:计算:53&2|8=90)printf(“,优秀”,),if(score=80&score=70&score=60&score70)printf(“,合格”,),if(scorec&b+ca&c+ab),s=0.5*(a+b+c);,area=sqrt(s*(s-a)*(s-b)*(s-c);,printf(area);,else printf(“it is not a triangle”);,说明:,4,、,if,嵌套语句中,应,当,当注意,if,与,else,的配对关系,,else,总是与它,上面的最近的未,配,配对的,if,配对。特别是,if/else,子句数目不一样,时,时,本意,实际,说明:,5,、,if,嵌套语句解决匹,配,配问题方法,(,1,)利用空语句使,if,子句数量,与,else,子句数量相同。,(,2,)利用,。将没有,else,子,句的,if,语句用,括起来,思考题一:,函数:,-1(x0),编一个程序,输入x,输出y。,有以下几个程序,,,,请判断哪个是,正,正确的?,思考题一:,程序,1,:,main(),int x,,,y,;,scanf(,d,,,&x),;,if(x,0)y=-1,;,else if(x=0)y=0,;,else y=1,;,printf(x=,d,,,y=,d,n,,,x,,,y),;,思考,题,题一,:,:,程序,2,:,main(),intx,,,y,;,scanf(,d,,,&x),;,if(x,=0),if(x,0)y=1,;,elsey=0,;,elsey=-1,;,printf(x=,d,,,y=,d,n,,,x,,,y),;,思考,题,题一,:,:,程序,3,:,main(),intx,,,y,;,scanf(,d,,,&x),;,y=-1,;,if(x!=0),if(x,0)y=1,;,elsey=0,;,printf(x=,d,,,y=,d,n,,,x,,,y),;,思考,题,题一,:,:,程序,4,:,main(),intx,,,y,;,scanf(,d,,,&x),;,y=0,;,if(x,=0),if(x,0)y=1,;,elsey=-1,;,printf(x=,d,,,y=,d,n,,,x,,,y),;,思考,题,题二,:,:,输入,两,两个,实,实数,,,,按,数,数值,由,由小,到,到大,的,的次,序,序输,出,出这,两,两个,数,数。,输入,三,三个,实,实数,,,,按,数,数值,由,由小,到,到大,的,的次,序,序输,出,出这,三,三个,数,数。,课堂,小,小结,:,:,关系,运,运算,和,和逻,辑,辑运,算,算,选择,结,结构,if,语句,的,的应,用,用,关系,运,运算,符,符:,,,=,,,,,=,,,=,,,!=,逻辑,运,运算,符,符:,&,|,!,各种,运,运算,符,符的,优,优先,级,级,,表,表达,式,式综,合,合应,用,用,if,语句,单分,支,支,if,else,语句,双分,支,支,if-elseif,语句,多分,支,支,if,语句,的,的嵌,套,套应,用,用,if,语句,的,的注,意,意问,题,题,Thankyouforcoming,演讲,完,完毕,,,,谢,谢,谢观,看,看!,
展开阅读全文