




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章关系选择结构第4章关系选择结构控制语句的概念:能够影响其他语句的执控制语句的概念:能够影响其他语句的执行方式的语句。行方式的语句。控制语句分类:选择和循环控制语句分类:选择和循环选择结构实现的语句选择结构实现的语句:if(p)、if(p)/else、switch/case(p是逻辑表达式)是逻辑表达式)第4章关系选择结构用流程图表示三种选择结构用流程图表示三种选择结构:表达式表达式真假语句语句 A单路选择单路选择表达式表达式语句语句 A语句语句 B真假双路选择双路选择第4章关系选择结构表达式表达式. .=c1=c2=c3=c4=cn语句 A语句 B语句 C语句 D语句 N多路选择多路选择
2、第4章关系选择结构4.1 关系运算符和关系表达式关系运算符和关系表达式1. 关系运算符及其优先顺序关系运算符及其优先顺序C 有有 6 种关系运算符:种关系运算符: (用来比较两端数据的大小)。(用来比较两端数据的大小)。 =优先级相同优先级相同(高高)= =! =优先级相同优先级相同(低低) ! (非非)高高算术运算符算术运算符关系运算符关系运算符 & 和和 赋值运算符赋值运算符低低并排两个等于号,并排两个等于号,一个时一个时,为赋值号。为赋值号。结合性:从左到右。结合性:从左到右。第4章关系选择结构2. 关系表达式关系表达式 关系表达式是用关系运算符将两个或两个以上算术、关系表达式是用关系运
3、算符将两个或两个以上算术、关系、逻辑、赋值或字符表达式连接起来的式子。关系、逻辑、赋值或字符表达式连接起来的式子。 关系表达式的值是一个逻辑值,关系表达式的值是一个逻辑值,“真真” (1) 或或 “假假”(0)。故可将关系表达式看成一种故可将关系表达式看成一种整型表达式。整型表达式。例如:例如: ca+b 等效于等效于: c(a+b)ab!=c (ab)!=ca=bc a=(bc a=(bc)1. 逻辑运算符逻辑运算符 连接多个条件的判断连接多个条件的判断&、|、!4.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式例例: 表达条件表达条件: 0=x=0 & x=0 & x= 0) | !(x
4、 = 10) x 0 | xb) & (xy) ab & xy(a= =b) (x= =y) a= =b x= =y( ! a) (ab) ! a ab(m=ab) & (n=cd) (m=(ab) ) &(n=(cd) ) ! (非非)高高算术运算符算术运算符关系运算符关系运算符 & 和和 赋值运算符赋值运算符低低若若a=5,b=4,c=3f=abc , (f=a)bc中,中,f=?表达式的值呢?表达式的值呢?第4章关系选择结构2. 逻辑表达式逻辑表达式 逻辑表达式是用逻辑运算符将关系表达式或逻辑量连接起来逻辑表达式是用逻辑运算符将关系表达式或逻辑量连接起来的式子。逻辑表达式的值是一个逻辑量
5、的式子。逻辑表达式的值是一个逻辑量“真真”(1) 或或 “假假”(0)。注意:注意:1)C语言中对逻辑量做了扩充:凡是非零值都看做语言中对逻辑量做了扩充:凡是非零值都看做“真真”,只有为零时才是只有为零时才是“假假”。 2)两边的类型不一定相同,如:)两边的类型不一定相同,如:2 & a b 。3. 逻辑表达式求解逻辑表达式求解a & b & c若若 a 为假,则表达式值为假。为假,则表达式值为假。a b c若若 a 为真,则表达式值为真。为真,则表达式值为真。53&283&2)为真,则表达式值为真。为真,则表达式值为真。& 和和 的优先级相同。的优先级相同。第4章关系选择结构复习复习:1.
6、关系表达式关系表达式 关系表达式是用关系运算符关系表达式是用关系运算符(、 =、 = =、! =)将两个或两个以上算术、关系、逻辑、赋值或字符表达将两个或两个以上算术、关系、逻辑、赋值或字符表达式连接起来的式子。式连接起来的式子。值是一个逻辑值,值是一个逻辑值,“真真” (1) 或或 “假假”(0)。故可将关系表达式看成一种整型表达式。故可将关系表达式看成一种整型表达式。2. 逻辑表达式逻辑表达式逻辑表达式是用逻辑运算符(逻辑表达式是用逻辑运算符(&、 |和和!)将关系)将关系表达式或逻辑量连接起来的式子。逻辑表达式的值表达式或逻辑量连接起来的式子。逻辑表达式的值是一个逻辑量是一个逻辑量“真真
7、”(1) 或或 “假假”(0)。第4章关系选择结构l ! (非非)高高l算术运算符算术运算符l关系运算符关系运算符l & 和和 l赋值运算符赋值运算符低低结合性:从左到右结合性:从左到右。第4章关系选择结构3、注意问题:、注意问题: 简化求值简化求值1)有时与数学上表达有所区别。)有时与数学上表达有所区别。2)日常用语和数学逻辑表达有时是相悖的。)日常用语和数学逻辑表达有时是相悖的。 如表达:如表达: x不等于不等于2或或3 if (x != 2 | x != 3) if(x!=2 &x!=3) 或或 if( !(x = = 2 | x = =3) 3)对)对“P1 & P2 & P3”,若,
8、若p1为假,则不再计算为假,则不再计算 p2和和p3表达式。表达式。4)对)对“P1 | P2 | P3”,若,若p1为真,则不再计算为真,则不再计算p2和和p3 表达式。表达式。例如:若例如:若 x= 1;y=2;z=3;m=4;n=8;则表达式(则表达式(k= xy) & (n = zm)的值是什么?的值是什么?n的值呢?的值呢?注:简化求值的利用:第一个条件能控制第二个条件的执行。即第注:简化求值的利用:第一个条件能控制第二个条件的执行。即第二个条件只有在第一个条件满足时才有意义。例如,条件:二个条件只有在第一个条件满足时才有意义。例如,条件:x的值的值非零;且非零;且x能整除能整除y:
9、 If ( x != 0 ) & (y%x =0) 第4章关系选择结构4.3 i f 语句语句1. i f 语句的一般形式语句的一般形式 i f (表达式表达式P) 语句;语句; i f (表达式表达式P) 语句语句1 ; else 语句语句2;其中:其中: “语句语句”、“语句语句1”和和“语句语句2”可以是简单语句,也可可以是简单语句,也可以是用以是用 括起来的复合语句,也可以是括起来的复合语句,也可以是 或或 形式的形式的 i f 语句。语句。 “语句语句1”后面的后面的“ ; ”是必须的。是必须的。 l 形式或看作一条完整的语句。形式或看作一条完整的语句。第4章关系选择结构例例4.1
10、输入三个实数,按小到大顺序输出。输入三个实数,按小到大顺序输出。int main( ) float a,b,c,t; scanf(“%f,%f,%f ”,&a,&b,&c); if (ab) t=a; a=b; b=t; if (ac) t=a; a=c; c=t; if (bc) t=b; b=c; c=t; printf(“%5.2f,%5.2f,%5.2f ”,a,b,c); return 0;若若ab, 则通过中间变量则通过中间变量 t 交换变量交换变量a, b的值的值第4章关系选择结构 2. p通常为关系表达式或逻辑表达式,甚至通常为关系表达式或逻辑表达式,甚至是一个不含是一个不含
11、关系运算符的表达式、或一个关系运算符的表达式、或一个常量或一个变量。常量或一个变量。l if(x) if(x !=0)l if(!x) if(x = = 0)l if (x=n)= = y) 与与if(x= n = = y)不同不同第4章关系选择结构3. i f 语句的嵌套语句的嵌套 在在 i f 语句中又包含一个或多个语句中又包含一个或多个 i f 语句称为语句称为 i f 语语句的嵌套。句的嵌套。i f ( ) i f ( ) 语句语句1; else 语句语句2;else i f ( ) 语句语句3; else 语句语句4;注:从最内层开始,注:从最内层开始,else总是与它前面最近的未曾
12、总是与它前面最近的未曾 配对的配对的if 配对,除非用花括号改变其配对关系。配对,除非用花括号改变其配对关系。第4章关系选择结构 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”);第4章关系选择结构可以写成:可以写成: if (grade =90)printf(“An”); else if (grade =80) printf(“Bn”); else
13、if (grade = 70) printf(“Cn”); else if(grade = 60) printf(“Dn”); else printf(“Fn”);第4章关系选择结构if 中有中有if语句。包括了三种形式:语句。包括了三种形式:(a) if(p1)if(p2) Aelse 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章关系选择结构例例4.2 编程求编程求 y =main(
14、) int x,y; scanf(“%d”,&x); i f (x0) y = -1; else i f (x=0) y = 0; else y = 1; printf(“x=%d,y=%dn”,x,y);-1( x 0 )的值。的值。x 的值从键盘输入。的值从键盘输入。参见参见P100第4章关系选择结构4. 条件运算符条件运算符若有如下若有如下 i f 语句:语句:i f (ab) max=a;else max=b;则可以用下面的条件运算符处理:则可以用下面的条件运算符处理:max = (ab) ? a : b;同样,对如下同样,对如下 i f 语句:语句:i f (ab) printf(“
15、%d”,a);else printf(“%d”,b);也可用下面的语句代替:也可用下面的语句代替:printf(“%d”,ab ? a : b);第4章关系选择结构 条件运算符条件运算符 “ ? : ” 是一个三目运算符,必须有三个操是一个三目运算符,必须有三个操 作对象。作对象。 条件运算符的优先级高于赋值运算符,低于关系运算条件运算符的优先级高于赋值运算符,低于关系运算 符和算术运算符。符和算术运算符。 如:如:ab?a:b+1/ 相当于相当于ab ? a : (b+1) / 条件运算符的结合方向为条件运算符的结合方向为 “自右至左自右至左”。ab?a:cd?c:d/* 相当于相当于ab?
16、a:(cd?c:d) */如:如:max = (ab) ? a : b; 仅在仅在 i f 语句内嵌的语句为赋值语句时,才能用条件语句内嵌的语句为赋值语句时,才能用条件 表达式取代该表达式取代该 i f 语句。语句。 条件表达式中的操作对象可以是不同的类型。条件表达式中的操作对象可以是不同的类型。如:如:x?a:b 当当x = 0时,条件表达式的值为时,条件表达式的值为bxy?1:1.5 当当 xy 时,条件表达式的值为时,条件表达式的值为 1.5, 否则为否则为 1。如:如:第4章关系选择结构1. 找出两个数中最大的数找出两个数中最大的数2. 找出三个数中最大的数找出三个数中最大的数3. 任
17、意输入三条边任意输入三条边(a,b,c)后,若能构成三后,若能构成三角形,判断是等腰、直角,还是一般三角形,判断是等腰、直角,还是一般三角形。角形。第4章关系选择结构例例4.3 求一元二次方程的解。求一元二次方程的解。#include “math.h”int main( ) float a,b,c,d,x1,x2,p,q; scanf(“%f,%f,%f ”,&a,&b,&c); printf(“该方程该方程”); if (fabs(a) = 1e-6) printf(“不是一个不是一个2次方程。次方程。”); else d=b b-4 a c; if (fabs(d) 1e-6) x1= (
18、-b+sqrt(d)/(2 a); x2= (-b-sqrt(d)/(2 a); printf(“有两个不相等的实根有两个不相等的实根: %8.4f and %8.4f n”,x1,x2); else p=-b/(2 a); q=sqrt(-d)/(2 a); printf(“有复数根有复数根:n”); printf(“%8.4f +%8.4f in”,p,q); printf(“%8.4f -%8.4f in”,p,q); return 0;此处不得写成:此处不得写成: fabs(a) = 0或或fabs(a) = 0因为这里是实数比较因为这里是实数比较 1e-6 为为 0.000001第4
19、章关系选择结构 1.语法语法:switch(表达式表达式P) case 常量表达式常量表达式1: 语句语句1; break; case 常量表达式常量表达式2: 语句语句2; break;case 常量表达式常量表达式n: 语句语句n; break;default: 语句语句m; break; 语句 1 常量表达式 1 相等 default:语句 m 表达式 P 不相等 语句 2 常量表达式 2 相等 不相等 语句 n 常量表达式 n 相等 不相等 第4章关系选择结构其中:其中:“表达式表达式P” 可以是任何类型的表达式(一般为整型、可以是任何类型的表达式(一般为整型、字符型、枚举型)。字符型
20、、枚举型)。“常量表达式常量表达式”(一般为整型常量表达式如:(一般为整型常量表达式如:整数、字整数、字符常量、枚举常量或整数常量表达式)符常量、枚举常量或整数常量表达式) 的值必须互不的值必须互不相同。相同。 各个各个 case 出现的先后顺序对执行结果没有影响。出现的先后顺序对执行结果没有影响。 执行完一个执行完一个case后面的语句后,通过后面的语句后,通过break语句结语句结束该控制结构束该控制结构 若所有的若所有的 “常量表达式常量表达式” 的值都不与的值都不与 “表达式表达式” 的的值相匹配,就值相匹配,就 执行执行 default 后面的语句。后面的语句。 多个多个case可以
21、共用一组执行语句。可以共用一组执行语句。 case后面若有多个语句,可以不用后面若有多个语句,可以不用 括起。括起。2. 说明说明:第4章关系选择结构各个分支中的各个分支中的“break;”可省略,若省略则执行可省略,若省略则执行方式不同,一般情况需保留。方式不同,一般情况需保留。可以没有可以没有default : 语句语句m; break; 分支。此时分支。此时当当p的值与各个的值与各个case的判断值都不一致时,程序的判断值都不一致时,程序不执行任何部分。但最好保留不执行任何部分。但最好保留default分支,即分支,即使不需要使不需要default处理,也可以写作处理,也可以写作 “de
22、fault : break;”以便好读,避免误会。以便好读,避免误会。 由于由于p1,p2,.pn只能是整型或类似整型的常只能是整型或类似整型的常量表示符,这限制了它的使用。此时可用量表示符,这限制了它的使用。此时可用if else 语句。语句。第4章关系选择结构改写例子改写例子g = grade / 10;g = grade / 10; switch(g) / switch(g) /* * g g的计算是关键的计算是关键 * */ / case 10:case 10:case 9 : printf(case 9 : printf(“n A nn A n”); break;); break;c
23、ase 8: printf(case 8: printf(“n B nn B n”); break;); break;case 7: printf(case 7: printf(“n C nn C n”); break;); break;case 6: printf(case 6: printf(“n D nn D n”); break;); break;case 5:case 5:case 4: case 4: case 3: case 3: case 2:case 2:case 1:case 1:case 0: printf(case 0: printf(“ n F nn F n”); b
24、reak;); break;default: break;default: break; 例子:例子:P106P106110110可以改为什么?可以改为什么?default: printf(“Fn”); break;第4章关系选择结构例例4.4某商店按如下折扣优惠购货的顾客:某商店按如下折扣优惠购货的顾客:D =折扣折扣05%7.5%10%15%购货金额购货金额(m 250)(250 m 500)(500 m 1000)(1000 m =2000) c=8; else c=m/250; switch(c) case 0: d=0; break; case 1: d=0.05; break; c
25、ase 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 = m ( 1 d ); printf(“Amount=%8.2f”,s);第4章关系选择结构D =C = int(m) / 250012, 34, 5, 6, 7 8main( ) int c; float d,m,s; printf(“n Enter m=“); scanf(“%f”,&m); c=m/250; /* m =(int)m/250;*/ swi
26、tch(c) case 0: d=0; break; case 1: d=0.05; break; 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);第4章关系选择结构综合举例综合举例:设计一个菜单程序来选择做设计一个菜单程序来选择做+、*、/运算。运算。1、内容和要求、内容和要求程序运行后,给出程序运行后,给出5个菜单项的内容和输入提示。个菜单项的内容和输入提示
27、。1. -Plus 2. -Minus 3. -Multiply 4. -Divided 5. -Goodby Input 1 5输入输入15来选择菜单项,其他输入则不起作用。来选择菜单项,其他输入则不起作用。第4章关系选择结构l算法算法S1:打印菜单界面打印菜单界面S2:输入选择值:输入选择值menuS3:if (menu=1) 则产生两个随机的整数:则产生两个随机的整数:x和和y并且显示并且显示 “x+y =”信息,等待输入答案;并判断答案是否正确信息,等待输入答案;并判断答案是否正确S4:if (menu=2) 则产生两个随机的整数:则产生两个随机的整数:x和和y并且显示并且显示 “x-y =”信息,等待输入答案;并判断答案是否正确信息,等待输入答案;并判断答案是否正确S5:if (menu=3) 则产生两个随机的整数:则产生两个随机的整数:x和和y并且显示并且显示 “x*y =”信息,等待输入答案;并判断答案是否正确信息,等待输入答案;并判断答案是否正确S6:if (menu=4) 则产生两个随机的整数:则产生两个随机的整数:x和和y并且显示并且显示 “x/y =”信息,等待输入答案;并判断答案是否正确信息,等待输入答案;并判断答案是否正确S7:if (menu=5) 则打印则打印“Goodbay”并退出程序。并退出程序。第4章关系选择结构l#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版智能化酒店中央空调设备采购与安装工程协议
- 2025至2030典当行业项目调研及市场前景预测评估报告
- 2025至2030认知补品行业市场占有率及投资前景评估规划报告
- 2025至2030装修板材行业市场深度调研及供需格局与投资前景报告
- 2025至2030羊奶行业市场发展分析及需求形式与投资报告
- 加油站施工人员健康防护措施
- 城市幼儿园消防安全管理及整改措施
- 2024年盲盒资金需求报告代可行性研究报告
- 幼儿园至一年级语文衔接复习计划
- 2024-2025年度初中体育课时安排计划
- 2025年辽宁省高考历史试卷及答案详解
- 《电工电子技术》课程标准
- JG/T 420-2013硬泡聚氨酯板薄抹灰外墙外保温系统材料
- 陈案清查工作报告
- 老旧小区基础设施环境改造工程施工组织设计
- 银行背债协议书
- 医生患者和解协议书
- 东莞住宅工程质量通病防治手册
- 2025-2030年中国海洋大数据行业市场现状供需分析及投资评估规划分析研究报告
- 2025新人教版英语八上单词英译汉默写表(先鸟版)
- 药店借用资质协议书范本
评论
0/150
提交评论