第4章关系选择结构课件

上传人:我*** 文档编号:141047317 上传时间:2020-08-03 格式:PPT 页数:33 大小:417KB
返回 下载 相关 举报
第4章关系选择结构课件_第1页
第1页 / 共33页
第4章关系选择结构课件_第2页
第2页 / 共33页
第4章关系选择结构课件_第3页
第3页 / 共33页
第4章关系选择结构课件_第4页
第4页 / 共33页
第4章关系选择结构课件_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《第4章关系选择结构课件》由会员分享,可在线阅读,更多相关《第4章关系选择结构课件(33页珍藏版)》请在金锄头文库上搜索。

1、第4章 选择程序设计结构,控制语句的概念:能够影响其他语句的执行方式的语句。 控制语句分类:选择和循环 选择结构实现的语句:if(p)、if(p)/else、switch/case(p是逻辑表达式),用流程图表示三种选择结构:,表达式,真,假,语句 A,单路选择,表达式,语句 A,语句 B,真,假,双路选择,选择结构的流程图表示法,选择结构的流程图表示法,表达式,. .,=c1,=c2,=c3,=c4,=cn,语句 A,语句 B,语句 C,语句 D,语句 N,多路选择,4.1 关系运算符和关系表达式,1. 关系运算符及其优先顺序,C 有 6 种关系运算符: (用来比较两端数据的大小)。, =,

2、优先级相同(高),= = ! =,优先级相同(低),! (非)高 算术运算符 关系运算符 y=2;z=3;m=4;n=8;则表达式(k= xy) else 语句2;,其中:, “语句”、“语句1”和“语句2”可以是简单语句,也可以是用 括起来的复合语句,也可以是 或 形式的 i f 语句。, “语句1”后面的“ ; ”是必须的。,形式或看作一条完整的语句。,例4.1 输入三个实数,按小到大顺序输出。,int main( ) float a,b,c,t; scanf(“%f,%f,%f ”, ,若ab, 则通过中间变量 t 交换变量a, b的值,2. p通常为关系表达式或逻辑表达式,甚至是一个不

3、含 关系运算符的表达式、或一个常量或一个变量。,if(x) if(x !=0),if(!x) if(x = = 0),if (x=n)= = y) 与if(x= n = = y)不同,3. i f 语句的嵌套,在 i f 语句中又包含一个或多个 i f 语句称为 i f 语 句的嵌套。,i f ( ) i f ( ) 语句1; else 语句2; else i f ( ) 语句3; else 语句4;,注:从最内层开始,else总是与它前面最近的未曾 配对的if 配对,除非用花括号改变其配对关系。,if (grade =90) printf(“An”); else if (grade =80)

4、 printf(“Bn”); else if (grade = 70) printf(“Cn”); else if(grade = 60) printf(“Dn”); else printf(“Fn”);,可以写成: if (grade =90) printf(“An”); else if (grade =80) printf(“Bn”); else if (grade = 70) printf(“Cn”); else if(grade = 60) printf(“Dn”); else printf(“Fn”);,if 中有if语句。包括了三种形式:(a) if(p1)if(p2) Aelse

5、 B (b) if(p1)if(p2)A elseB(c) if (p1)if(p2)Aelse B else C,规则:else总是与离它最近的可用的if 配对。修改(b) if(p1) if(p2)A elseB,例4.2 编程求 y =,main( ) int x,y; scanf(“%d”, ,-1( x 0 ),的值。,x 的值从键盘输入。,参见P100,4. 条件运算符,若有如下 i f 语句: i f (ab) max=a; else max=b;,则可以用下面的条件运算符处理: max = (ab) ? a : b;,同样,对如下 i f 语句: i f (ab) printf

6、(“%d”,a); else printf(“%d”,b);,也可用下面的语句代替: printf(“%d”,ab ? a : b);, 条件运算符 “ ? : ” 是一个三目运算符,必须有三个操 作对象。, 条件运算符的优先级高于赋值运算符,低于关系运算 符和算术运算符。,如:,ab?a:b+1,/ 相当于ab ? a : (b+1) /, 条件运算符的结合方向为 “自右至左”。,ab?a:cd?c:d,/* 相当于ab?a:(cd?c:d) */,如:max = (ab) ? a : b;, 仅在 i f 语句内嵌的语句为赋值语句时,才能用条件 表达式取代该 i f 语句。, 条件表达式中

7、的操作对象可以是不同的类型。,如:,x?a:b 当x = 0时,条件表达式的值为b,xy?1:1.5 当 xy 时,条件表达式的值为 1.5, 否则为 1。,如:,例,1. 找出两个数中最大的数 2. 找出三个数中最大的数 3. 任意输入三条边(a,b,c)后,若能构成三角形,判断是等腰、直角,还是一般三角形。,例4.3 求一元二次方程的解。,#include “math.h” int main( ) float a,b,c,d,x1,x2,p,q; scanf(“%f,%f,%f ”, ,4.4 switch语句,1.语法: switch(表达式P) case 常量表达式1: 语句1; br

8、eak; case 常量表达式2: 语句2; break; case 常量表达式n: 语句n; break; default: 语句m; break; ,其中:,“表达式P” 可以是任何类型的表达式(一般为整型、字符型、枚举型)。,“常量表达式”(一般为整型常量表达式如:整数、字符常量、枚举常量或整数常量表达式) 的值必须互不相同。, 各个 case 出现的先后顺序对执行结果没有影响。, 执行完一个case后面的语句后,通过break语句结束该控制结构, 若所有的 “常量表达式” 的值都不与 “表达式” 的值相匹配,就 执行 default 后面的语句。, 多个case可以共用一组执行语句。,

9、 case后面若有多个语句,可以不用 括起。,2. 说明:,各个分支中的“break;”可省略,若省略则执行方式不同,一般情况需保留。 可以没有default : 语句m; break; 分支。此时当p的值与各个case的判断值都不一致时,程序不执行任何部分。但最好保留default分支,即使不需要default处理,也可以写作 “default : break;”以便好读,避免误会。 由于p1,p2,.pn只能是整型或类似整型的常量表示符,这限制了它的使用。此时可用if else 语句。,改写例子 g = grade / 10; switch(g) /* g的计算是关键 */ case 10

10、: case 9 : printf(“n A n”); break; case 8: printf(“n B n”); break; case 7: printf(“n C n”); break; case 6: printf(“n D n”); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“n F n”); break; default: break; 例子:P106110,可以改为什么?,default: printf(“Fn”); break;,例4.4某商店按如下折扣优惠购货的顾客:,D =,折扣 0 5%

11、 7.5% 10% 15%,购货金额 (m 250) (250 m 500) (500 m 1000) (1000 m 2000) ( m 2000),C = int(m) / 250 0 1 2, 3 4, 5, 6, 7 8,试编程,输入购货金额 m,求顾客应付金额 s。,main( ) int c; float d,m,s; scanf(“%f”, case 2:,case 3: d=0.075; break; case 4: case 5: case 6: case 7: d=0.1; break; case 8: d=0.15; break; default: break; s =

12、m ( 1 d ); printf(“Amount=%8.2f”,s); ,D =,C = int(m) / 250 0 1 2, 3 4, 5, 6, 7 8,main( ) int c; float d,m,s; printf(“n Enter m=“); scanf(“%f”, case 2:,case 3: d=0.075; break; case 4: case 5: case 6: case 7: d=0.1; break; default: d=0.15; break; s = m ( 1 d ); printf(“Amount=%8.2f”,s); ,综合举例:设计一个菜单程序

13、来选择做+、*、/运算。 1、内容和要求程序运行后,给出5个菜单项的内容和输入提示。1. -Plus 2. -Minus 3. -Multiply 4. -Divided 5. -Goodby Input 1 5 输入15来选择菜单项,其他输入则不起作用。,算法 S1:打印菜单界面 S2:输入选择值menu S3:if (menu=1) 则产生两个随机的整数:x和y并且显示 “x+y =”信息,等待输入答案;并判断答案是否正确 S4:if (menu=2) 则产生两个随机的整数:x和y并且显示 “x-y =”信息,等待输入答案;并判断答案是否正确 S5:if (menu=3) 则产生两个随机的

14、整数:x和y并且显示 “x*y =”信息,等待输入答案;并判断答案是否正确 S6:if (menu=4) 则产生两个随机的整数:x和y并且显示 “x/y =”信息,等待输入答案;并判断答案是否正确 S7:if (menu=5) 则打印“Goodbay”并退出程序。,#include #include #include #include main() int x,y,z,r,choose; clrscr(); printf(nnnnnnn); printf(ttt1.-Plusnn); printf(ttt2.-Minusnn); printf(ttt3.-Multiplenn); printf(ttt4.-Dividednn); printf(ttt5.-Goodbynn); printf(tttInput 1-5:nn); scanf(%d,case 2: x= random(99); y = random(99); printf(n %d - %d = , x,y); scanf(%d, ,运行: 输入:5,7.5,B,结果:OK! 7.500000,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号