1、第4章 选择结构程序设计,主要内容,一、选择结构概述 二、关系、逻辑表达式 三、单分支选择结构 四、双分支选择结构 五、多分支选择结构 六、选择结构的嵌套,一、选择结构概述,1、为什么要用选择结构?,来源于现实,如:汽车行驶中,如果交通灯是红色或黄色,则停止,否则通行,一、选择结构概述,2、选择结构的类型,单分支,双分支,多分支,表达式?,语句,表达式?,语句1,语句2,Y,N,Y,N,二、关系、逻辑表达式,1、关系表达式,关系运算符:、 =、!=,关系表达式:ab , a+bb+c, ab)(bc)关系表达式的值是一个逻辑值,即“真”或“假”。,优先级高,二、关系、逻辑表达式,2、逻辑表达式
2、,逻辑运算符:&、 |、!,逻辑表达式:a&b , a|b , ! a值是一个逻辑值,即“真”或“假”。,优先次序: !(非)-&(与)-|(或),二、关系、逻辑表达式,2、逻辑表达式,设a=4,b=5: !a a&b a|b !a|b 4&0|2,值为0,值为1,值为1,值为1,值为1,三、单分支选择结构,1、实现单分支选择结构的语句if 语句,单分支,表达式?,语句,Y,N,If (表达式) 语句,三、单分支选择结构,2、单分支选择结构示例,例1、求a、b两数中较大的数。,#include int main() int a,b,max;printf(“input a b: ”);scanf
3、(“%d%d”, ,三、单分支选择结构,例2、从键盘上读入一个大写字符,转换为小写字符输出(要求判断是否是大写字母)。,#include int main() char c1,c2;printf(“input a character: ”);scanf(“%c”, ,四、双分支选择结构,1、if 语句,If (表达式) 语句1; else语句2;,四、双分支选择结构,例3、求a、b两数中较大的数(双分支)。,#include int main() int a,b,max;printf(“input a b: ”);scanf(“%d%d”, ,四、双分支选择结构,2、条件表达式,格式: 条件?
4、表达式2:表达式3,如果 条件为真,则返回表达式2的值,否则返回表达式3的值,四、双分支选择结构,例4、求a、b两数中较大的数(条件表达式)。,#include int main() int a,b,max;printf(“input a b: ”);scanf(“%d%d”, ,四、双分支选择结构,例5、将大写字母转化为小写字母。,char c1;c1=( c164 ,五、多分支选择结构,表达式1?,语句1,Y,N,表达式2?,语句2,Y,N,表达式n?,语句n,Y,N,语句n+1,五、多分支选择结构,1、If 语句实现,if 条件1语句1 ; if 条件2语句2 ; if 条件3语句3 ;
5、,a0,a=0,a0,或: if 条件1语句1 ; elseif 条件2语句2 ;else语句3 ;,五、多分支选择结构,2、Switch语句,例6:10086语音提示。例7:输入一百分制分数,请转换为等级A,B,C,D。,五、多分支选择结构,2、Switch语句,语句1,表达式,语句2,语句n,语句n+1,值1,值2,值n,否则,五、多分支选择结构,2、Switch语句,(1) 设计要领:先对要做的几个操作编号。,操作1操作2操作3操作4,值集合,操作集合,五、多分支选择结构,2、Switch语句,(1) 设计要领:,操作1操作2操作3操作4,1,3,5,4,选取合适的某个表达式,让其取值能
6、分别指向某个操作。,表达式,值,2,五、多分支选择结构,(2) switch语句格式,switch(表达式 )case 常量1:语句1;case 常量2:语句2;case 常量n:语句n;default: 语句n+1; ,break;,终止此分支语句,五、多分支选择结构,(3) break语句,终止本次选择结构。,格式:break;,五、多分支选择结构,例8 将等级成绩转换为百分制成绩,A等为85分以上,B等为70-84之间,C等为 60-69分,D等为60分以下。成绩的等级由键盘输入。,五、多分支选择结构,开始,结束,输入等级grade,“85100”,“7084”,“6069”,“60”,
7、grade,#include void main() char grade;printf(“请输入等级成绩: ”);scanf(“%C”, ,A,B,C,D,五、多分支选择结构,例9 运输公司对用户计算运费。路程()越远,每公里运费越低。标准如下: 没有折扣 折扣 折扣 折扣 折扣 折扣 设每公里每吨货物的基本运费为,货物重为,距离为,折扣为,则总运费的计算公式为: *(),五、多分支选择结构,分析折扣变化的规律性:折扣的“变化点”都是的倍数 取表达式为s/250 ,其值装入c。c代表的倍数。 ,无折扣; ,折扣; ,; ,; ,;,。,五、多分支选择结构,#include void main
8、 ( ) int c,s; float p,w,d,f; scanf(“%f,%f,%d“, ,五、多分支选择结构,例10 简单计算器 下面程序是实现一个简单的运算器(保留两位小数点): 如果由键盘输入 10+50,计算机可以输出结果 60.00; 如果输入 8*6,计算机输出 48.00; 如果输入 20/4,计算机输出 5.00; 如果输入 8-6,计算机输出 2.00, 请在空处填上适当的代码。,五、多分支选择结构,#include “stdio.h“ void main() float a,b,c; char op; scanf(“%f%c%f“, ,c=a+b;break,c=a-b
9、;break,c=a*b;break,c=a/b;break,六、选择结构的嵌套,在选择结构中又包含一个或多个选择结构。如:if ()语句1;elseif ()语句2;else语句3;注意:if与else配对情况,else与最近的if 配对。,六、选择结构的嵌套,例11 有一函数,编一程序,输入一个x的值,要求输出相应的y值。,方法1:用三个独立的if语句来完成。 方法2:用if语句的嵌套。,六、选择结构的嵌套,例12 你的身材标准吗?从键盘输入某人的身高和体重后,按照下面的方 法确定此人的体重是否标准。标准体重=(身高-110)kg超过标准体重5kg为过胖,低于标准体重5kg为过瘦,六、选择结构的嵌套,#include int main() float height,weight;printf(“请输入您的身高和体重: ”);scanf(“%f,%f”, ,