资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,C,语言程序设计,第,4,章 选择结构程序设计,延边大学经济管理学院 朴光赫,C语言程序设计第4章 选择结构程序设计延边大学经济管理学院,程序、算法,算法表示,基本结构:顺序、选择、循环,表达式、表达式语句,基本输入输出函数,格式控制、格式声明、格式字符,第三章 简 要 回 顾,程序、算法第三章 简 要 回 顾,第四章 选择结构程序设计,第四章 选择结构程序设计,主要内容、重点、难点,?,1.,掌握算术运算符、关系运算符、逻辑运算符以及各个表达式的概念和用法。,2.,用,if,语句实现循环结构,用,switch,语句实现多分支选择结构。(嵌套使用),3.,注意,switch,语句使用中,,case,语句只起语句标号作用)。因此,要用,break,语句,正确实现多分支选择。,4.,条件运算符(?:),-,三目运算符。,主要内容,难点:编写选择结构的程序,主要内容、重点、难点?1.,条件判断,1,4.1.1,条件判断的含义,条件判断的结果是逻辑值:“是”或“否”。,条件判断14.1.1 条件判断的含义条件判断的结果是逻辑值:,条件判断,1,4.1.2,关系运算符和关系表达式,算术运算符,关系运算符,逻辑运算符,(高),(低),关系表达式,用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符表达式接起来的式子,称关系表达式。,关系表达式的值是一个逻辑值,,即“真”或“假”。,C,语言中没有专用的逻辑值,,1,代表真,,0,代表假,条件判断14.1.2 关系运算符和关系表达式算术运算符关系运,条件判断,1,4.1.3,逻辑运算符和逻辑表达式,1.,逻辑运算符及其优先次序,&(,逻辑与,),相当于其他语言中的,AND,|(,逻辑或,),相当于其他语言中的,OR,!(,逻辑非,),相当于其他语言中的,NOT,例:,a&b,若,a,b,为真,则,a&b,为真。,a|b,若,a,b,之一为真,则,a|b,为真。,!,a,若,a,为真,则,!a,为假。,条件判断14.1.3 逻辑运算符和逻辑表达式1.逻辑运算符及,条件判断,1,4.1.3,逻辑运算符和逻辑表达式,逻辑运算符:,1.&(,逻辑与,),相当于其他语言中的,AND,2.|(,逻辑或,),相当于其他语言中的,OR,3.!(,逻辑非,),相当于其他语言中的,NOT,例:,a&b,若,a,b,为真,则,a&b,为真。,a|b,若,a,b,之一为真,则,a|b,为真。,!,a,若,a,为真,则,!a,为假。,优先次序:,!,(,非,)-&()-|(),逻辑运算符中的“,&”,和“,|”,低于关系运算符,,“,!”,高于算术运算符,逻辑表达式,用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式,逻辑表达式的值应该是一个逻辑量“真”或“假”。“非零为真”。,条件判断14.1.3 逻辑运算符和逻辑表达式逻辑运算符:优先,条件判断,1,a,b,!a,!b,a&b,a|b,真,假,真,假,假,假,真,真,真,假,假,假,假,假,真,真,假,假,真,真,真,假,真,真,a,b,!a,!b,a&b,a|b,非,0,0,非,0,0,0,0,非,0,非,0,1,0,0,0,0,0,1,1,0,0,1,1,1,0,1,1,条件判断1ab!a!ba&ba|b真假真假假假真真真假假,条件判断,1,例:,53&83,逻辑值为,1,!0,逻辑值为,1,4-1,值为,3,83&83逻辑值为1!,条件判断,1,在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。,(1)a&b&c,只有,a,为真时,才需要判断,b,的值,只有,a,和,b,都为真时,才需要判断,c,的值。,(2)a|b|c,只要,a,为真,就不必判断,b,和,c,的值,只有,a,为假,才判断,b,。,a,和,b,都为假才判断,c,例,:,(m=ab)&(n=cd),当,a=1,b=2,c=3,d=4,m,和,n,的原值为,1,时,由于“,ab”,的值,为,0,,因此,m=0,,而“,n=cd”,不被执行,因此,n,的值不是,0,而,仍保持原值,1,。,条件判断1在逻辑表达式的求解中,并不是所有的逻辑运算符都要被,条件判断,1,例,:,判断闰年,1.,问题提出:,能被,4,整除,但不能被,100,整除;,能被,4,整除,又能被,400,整除。,2.,解题思路:,3.,编写程序,:,4.,运行结果,:,5.,程序分析,:,6.,程序改进,:,year%400|(year%4=0&year%100!=0),值为真,(1),是闰年,否则为非闰年。,?,!(year%400|(year%4=0&year%100!=0),值为真,(1),是非闰年,否则为闰年。,(year%4!=0)|(year%100=0)&year%400!=0),值为真,(1),是非闰年,否则为闰年。,条件判断1 例:判断闰年year%400|,条件判断,1,条件判断1,条件判断,1,条件判断1,用,if,语句实现选择结构,2,例,4.1,成绩比较,1.,问题提出:,2.,解题思路:,变量,max,,,a,大于或等于,b,,,a,的值赋给,max,,,b,大于,a,,,b,的值赋给,max,3.,编写程序,:,4.,运行结果,:,5.,程序分析,:,6.,程序改进,:,if-else,结构,#include,int main(),float a,b,max;,printf(please enter a and b:),scanf(%f,%f,if(a=b)max=a;,if(ba)max=b;,printf(max=%6.2fn,max);,return 0;,max=a,真,假,a,b,max=b,真,假,b,a,max=a,真,假,a,b,max=b,用if语句实现选择结构2例4.1 成绩比较#include,用,if,语句实现选择结构,2,例,4.2 3,个,成绩排序,1.,问题提出:,2.,解题思路:,伪代码描述,3.,编写程序,:,4.,运行结果,:,5.,程序分析,:,6.,程序改进,:,if-else,结构,#include void main()float a,b,c,t;scanf(“%f,%f,%f”,if(a,b)t=a;a=b;b=t;if(a,c)t=a;a=c;c=t;,if(b,c)t=b;b=c;c=t;printf(%5.2f,%5.2f,%5.2fn,a,b,c);,伪代码算法描述:,If ab,将,a,和,b,对换,If ac,将,a,和,c,对换,If bc,将,b,和,c,对换,ab,ac,bc&b+ca&c+ab),s=0.5*(a+b+c);,area=sqrt(s*(s-a)*(s-b)*(s-c);,printf(area=%6.2fn,area);,else,printf(It is not a trila),return 0;,用If语句实现选择结构2例4.3 三角形面积#include,用,If,语句实现选择结构,2,4.2.4,使用嵌套的,if,语句实现多层条件判断,If(),if(),语句,1,else,语句,2,Else,if(),语句,3,else,语句,4,匹配规则:,e,lse,总是与它上面的,最近的,,统一复合语句中的,未配对的,if,语句配对。,例:,If(),if(),语句,1,else,if(),语句,2,else,语句,3,例:,If(),if(),语句,1,else,if(),语句,2,else,语句,3,用If语句实现选择结构24.2.4 使用嵌套的if语句实现多,用,If,语句实现选择结构,2,if,语句的嵌套,#include,void main(),int x,y;,scanf(“%d”,程序段,printf(“x=%d,y=%dn”,x,y);,用If语句实现选择结构2 if语句的嵌套#include0)y=1;,Else else y=0;,If(x=0)y=0;else y=-1;,Else y=1;,程序,3:,程序,4:,Y=-1;y=0;,If(x!=0)if(x=0),If(x0)y=1;if(x0)y=1;,Else y=0;Else y=-1;,正,确,正,确,用If语句实现选择结构2上例中的程序段有四个,请判断哪个是正,用,If,语句实现选择结构,2,例,4.4,促销折扣,1.,问题提出:,购买货物多,优惠也多,2.,解题思路:,判断货物折扣的选择结构,关系式:,应付货款,=,件数,*,单价,*,(,1-,优惠折扣),3.,编写程序,:,4.,运行结果,:,5.,程序分析,:,6.,程序改进,:,#include,#include,int main(),int number;,double cost,price,total;,printf(please enter number and price:);,scanf(%d,%lf,if(number=500)cost=0.15;,嵌套的,if,语句,else,if(number=300)cost=0.10;,else,if(number=100)cose=0.075;,else,if(number=50)cost=0.05;,else cost=o;,用If语句实现选择结构2例4.4 促销折扣#include=500)cost=0.15;,else if(number=300)cost=0.10;,else if(number=100)cose=0.075;,else if(number=50)cost=0.05;,else cost=o;,total=number*price*(1-cost);,printf(Total=%10.2fn,total);,return 0;,用If语句实现选择结构2例4.4 促销折扣#include,利用,switch,语句实现多分支选择结构,3,switch,语句的格式:,switch,(表达式),case,常量表达式:语句,case,常量表达式:语句,case,常量表达式:语句,default,:语句,switch,表达式,语句组,1,语句组,2,语句组,n,语句组,.,C 1,C 2,Cn,default,case,利用switch语句实现多分支选择结构3switc,利用,switch,语句实现多分支选择结构,3,例,:,要求按照考试成绩的等级输出百分制分数段,用,switch,语句实现:,switch,(,grade,),case ,printf,(,-,);,case,printf,(,-,);,case,printf,(,-,);,case,printf,(,);,default,(,printf,);,利用switch语句实现多分支选择结构3例:要求按,利用,switch,语句实现多分支选择结构,3,grade,输出,85,100,A,B,输出,70,84,输出,60,69,C,输出,60,输出,error,D,其他,利用switch语句实现多分支选择结构3grade,利用,switch,语句实现多分支选择结构,3,说明:,(,1,),switch,后面括弧内的,“,表达式”,,ANSI,标准允许它为任何类型。,(,2,)当表达式的值与某一个,case,后面的常量表达式的值相等时,就执行此,case,后面的语句,若所有的,case,中的常量表达式的值都没有与表达式的值匹配的,就执行,default,后面的语句。,(,3,),每一个,case,的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。,利用switch
展开阅读全文