选择结构程序设计.ppt
1,第五章,选择结构程序设计,2,第五章 选择结构程序设计,一、关系运算符和关系表达式二、逻辑运算符和逻辑表达式三、实现选择结构的控制语句四、选择结构程序举例,主要内容,3,关系运算符,=!=(6种),第五章 选择结构程序设计,优先级,赋值 关系(后2前4)算术,关系表达式,用关系运算符将两个表达式连接起来的式子.,算术、关系、逻辑、赋值、字符。,值,真(1)假(0),举例,已知:(a=3 b=2 c=1 d=0),0,a=bc,d=ab+c,1,53?,d=ab+c?,一、关系运算符和关系表达式,4,逻辑运算符,!(逻辑非)&(逻辑与)|(逻辑或),运算规则,优先次序,赋值|&关系算术!,第五章 选择结构程序设计,(1)!:取逻辑值的相反值。(2)&:参加运算的两个逻辑值都为真时,结果为真(1)。(3)|:参加运算的两个逻辑值都为假时,结果为假(0)。,P89,逻辑表达式,用逻辑运算符将关系表达式和逻辑量连接起来的式子。,举例,已知:(a=b=),1,a|b&0,!a&(53)|b,0,P375,双目,单目,二、逻辑运算符和逻辑表达式,5,第五章 选择结构程序设计,举例,53&8 4-!0,0,(53)&(8(4-!0),4&53|2,1,注意,90,逻辑运算符两侧的运算对象不但可以是和,也可以是或非的整数,也可是任何类型的数据。系统判定标准:为假;非为真。,二、逻辑运算符和逻辑表达式,6,第五章 选择结构程序设计,(一)、选择结构的三种分支(二)、单分支(三)、双分支(四)、多分支,三、实现选择结构的控制语句,7,选择结构,单分支,双分支,if(表达式)语句,多分支,if(表达式)语句else 语句,if(表达式1)语句else if(表达式)语句else 语句n,if 语句的嵌套,switch语句,第五章 选择结构程序设计,(一)、选择结构的三种分支,8,格式,举例,if(xy)printf(“%d”,x);,第五章 选择结构程序设计,if(表达式)语句,#include void main()float a,b,t=0;scanf(“%f,%f”,3,4 3.00,4.00,if(ab)t=a;a=b;b=t;,if(ab)t=a;a=b;b=t;,3,4 4.00,0.00,当某些语句作为一个整体出现的时候,必须是复合语句的形式。,(二)、单分支,9,格式,if(xy)printf(“%d”,x);else printf(“%d”,y);,第五章 选择结构程序设计,#include void main()float a,b,c,p,s;scanf(“%f,%f,%f”,if(表达式)语句else 语句,例:输入三角形的三边,求三角形的面积。,3,4,5s=6.00,3,4,8Not a triangle!,(三)、双分支,10,条件运算符条件表达式,举例,if(ab)max=a;else max=b;,第五章 选择结构程序设计,表达式?表达式:表达式,max=(ab)?a:b;,说明,P97,条件运算符的使用条件,若if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值,则可以用简单的条件运算符来处理。,取值,表达式1为真,则取值为表达式2的值;表达式1为假,则取值为表达式3的值。,(三)、双分支,11,格式,举例,第五章 选择结构程序设计,if(cost3000)cash=500;else if(cost2000)cash=300;else if(cost1500)cash=200;else if(cost1000)cash=100;else cash=0;,if(表达式1)语句else if(表达式)语句else 语句n,注意,P92,语句本身含分号,(四)、多分支(一),12,if语句的嵌套,第五章 选择结构程序设计,在if语句中又包含一个或多个if语句。,被嵌套的条件语句和嵌套进去的条件语句既可是单分支,也可是双分支。,if(表达式)if(表达式)语句else 语句else if(表达式3)语句3else 语句4,注意,if与else的配对原则:else总是与它上面的最近的未配对的if配对。,分析方法,1、主句是单分支还是双分支的。2、嵌套进来的子句是双分支还是单分支的,嵌套在if后面还是else后面。,(四)、多分支(二),13,举例,第五章 选择结构程序设计,已知a=3 b=4 c=5 d=0,d=?,if(ab)d=a;else if(cb)d=c;else d=b;,if(ab)if(cb)d=c;else d=b;,if(ab)if(cb)d=c;else d=b;,if(ab)if(cb)d=c;else d=b;else d=a;,d=5,d=3,d=0,d=4,(四)、多分支(二),14,开关语句,第五章 选择结构程序设计,switch(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式3:语句3 case 常量表达式n:语句n default:语句n+1,P98,当分支较多时,使用嵌套的if语句层数多,程序冗长而且可读性降低。此时可以考虑使用switch语句(开关语句)来处理多分支。,(四)、多分支(三),15,举例,#include void main()char grade;printf(“请输入考试等级AD:”);scanf(“%c”,B7079606960Error,根据输入的考试成绩等级打印出百分制分数段。A:80100 B:7079 C:6069 D:60,说明:应在每一个printf后加break语句,P99(说明),第五章 选择结构程序设计,(四)、多分支(三),16,举例,#include void main()char grade;printf(“请输入考试等级AD:”);scanf(“%c”,B7079,根据输入的考试成绩等级打印出百分制分数段。A:80100 B:7079 C:6069 D:60,最后一行的break可以省略。,第五章 选择结构程序设计,(四)、多分支(三),17,思考,#include void main()int score;printf(“请输入考试成绩0100:”);scanf(“%c”,根据输入的考试成绩(百分制整数)打印出等级水平。(使用ifelse语句实现)A:80100 B:7079 C:6069 D:60,思考:使用switch语句如何实现?,程序,第五章 选择结构程序设计,(四)、多分支(三),18,思考,#include void main()int score;printf(“请输入考试成绩0100:”);scanf(“%c”,根据输入的考试成绩(百分制整数)打印出等级水平。(使用switch语句实现)A:80100 B:7079 C:6069 D:60,思考:本程序有问题么?,程序,第五章 选择结构程序设计,(四)、多分支(三),19,#include void main()int score,p;printf(“请输入考试成绩0100:”);scanf(“%c”,改进程序1,11种情况,思考:不同case值时执行相同的操作,是否可以合并?,第五章 选择结构程序设计,20,#include void main()int score,p;printf(“请输入考试成绩0100:”);scanf(“%c”,改进程序2,注意:多个case共用一组执行语句时,共用的执行语句写在最后一个case的后面。,第五章 选择结构程序设计,21,例1,输入一年号,判断这一年是否为闰年.,第五章 选择结构程序设计,四、选择结构程序设计举例,22,例1,输入一年号,判断这一年是否为闰年.,第五章 选择结构程序设计,#include void main()int year,leap;scanf(%d,运行情况如下:输入:1800输出:1800 is not a leap year输入:2000输出:2000 is a leap year输入:1996输出:1996 is a leap year,条件可否合并写成一行呢?,四、选择结构程序设计举例,23,改进程序,第五章 选择结构程序设计,#include void main()int year,leap;scanf(%d,四、选择结构程序设计举例,24,第五章 选择结构程序设计,例2,求方程 ax2+bx+c=0 的解.(各种形式),四、选择结构程序设计举例,25,第五章 选择结构程序设计,#include#include void main()float a,b,c,disc,x1,x2,realpart,imagpart;scanf(%f,%f,%f,注意:P102,四、选择结构程序设计举例,26,第五章 选择结构程序设计,#include void main()int c,s;float p,w,d,f;scanf(%f,%f,%d,例3,103页5.7,运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:没有折扣 2%折扣 5%折扣 8%折扣 10%折扣 15%折扣设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费的计算公式为F=p*w*s*(1-d),四、选择结构程序设计举例,27,作业P104:5.3,5.4,5.5,5.6,5.7,28,