版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4章章 选择程序设计构造选择程序设计构造4.1关系运算符和关系表达式关系运算符和关系表达式4.2逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.3i f 语句语句4.4switch 语句语句控制语句的概念:可以影响其他语句的执控制语句的概念:可以影响其他语句的执行方式的语句。行方式的语句。控制语句分类:选择和循环控制语句分类:选择和循环选择构造实现的语句选择构造实现的语句:if(p)、if(p)/else、switch/case(p是逻辑表达式是逻辑表达式用流程图表示三种选择构造:用流程图表示三种选择构造:表达式表达式真假语句语句 A单路选择单路选择表达式表达式语句语句 A语句语句 B真假
2、双路选择双路选择表达式表达式. .=c1=c2=c3=c4=cn语句 A语句 B语句 C语句 D语句 N多路选择多路选择4.1 关系运算符和关系表达式关系运算符和关系表达式1. 关系运算符及其优先顺序关系运算符及其优先顺序C 有有 6 种关系运算符:种关系运算符: 用来比较两端数据的大小。用来比较两端数据的大小。 =优先级一样优先级一样(高高)= =! =优先级一样优先级一样(低低) ! (非非)高高算术运算符算术运算符关系运算符关系运算符 & 和和 赋值运算符赋值运算符低低并排两个等于号,并排两个等于号,一个时一个时,为赋值号。为赋值号。结合性:从左到右。结合性:从左到右。2. 关系
3、表达式关系表达式 关系表达式是用关系运算符将两个或两个以上算术、关系表达式是用关系运算符将两个或两个以上算术、关系、逻辑、赋值或字符表达式衔接起来的式子。关系、逻辑、赋值或字符表达式衔接起来的式子。 关系表达式的值是一个逻辑值,关系表达式的值是一个逻辑值,“真真 (1) 或或 “假假(0)。故可将关系表达式看成一种整型。故可将关系表达式看成一种整型表达式。表达式。例如:例如: ca+b 等效于等效于: c(a+b)ab!=c (ab)!=ca=bc a=(bc a=(bc)1. 逻辑运算符逻辑运算符 衔接多个条件的判别衔接多个条件的判别&、|、!4.2 逻辑运算符和逻辑表达式逻辑运算符
4、和逻辑表达式例例: 表达条件表达条件: 0=x=0 & x=0 & x= 0) | !(x = 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=?表达式的值呢?表达式的值呢?2. 逻辑表达式逻辑表达式 逻辑表
5、达式是用逻辑运算符将关系表达式或逻辑量衔接逻辑表达式是用逻辑运算符将关系表达式或逻辑量衔接起来起来的式子。逻辑表达式的值是一个逻辑量的式子。逻辑表达式的值是一个逻辑量“真真(1) 或或 “假假(0)。留意:留意:1C言语中对逻辑量做了扩展:凡是非零值都看做言语中对逻辑量做了扩展:凡是非零值都看做“真,只需为零时才是真,只需为零时才是“假。假。 2两边的类型不一定一样,如:两边的类型不一定一样,如:2 & a b 。3. 逻辑表达式求解逻辑表达式求解a & b & c假设假设 a 为假,那么表达式值为假。为假,那么表达式值为假。a b c假设假设 a 为真,那么表达式值为
6、真。为真,那么表达式值为真。53&283&2)为真,那么表达式值为真。为真,那么表达式值为真。& 和和 的优先级一样。的优先级一样。复习复习:1. 关系表达式关系表达式 关系表达式是用关系运算符关系表达式是用关系运算符(、 =、 = =、! =将两个或两个以上算术、关系、逻辑、赋值或将两个或两个以上算术、关系、逻辑、赋值或字符表达式衔接起来的式子。值是一个逻辑值,字符表达式衔接起来的式子。值是一个逻辑值,“真真 (1) 或或 “假假(0)。故可将关系表达式看成一种整型表达式。故可将关系表达式看成一种整型表达式。2. 逻辑表达式逻辑表达式逻辑表达式是用逻辑运算符逻辑表达式
7、是用逻辑运算符&、 |和和!将关系将关系表达式或逻辑量衔接起来的式子。逻辑表达式的值表达式或逻辑量衔接起来的式子。逻辑表达式的值是一个逻辑量是一个逻辑量“真真(1) 或或 “假假(0)。l ! (非)高l算术运算符l关系运算符l & 和 l赋值运算符低结合性:从左到右。结合性:从左到右。3、留意问题:、留意问题: 简化求值简化求值1有时与数学上表达有所区别。有时与数学上表达有所区别。2日常用语和数学逻辑表达有时是相悖的。日常用语和数学逻辑表达有时是相悖的。 如表达:如表达: x不等于不等于2或或3 if (x != 2 | x != 3) if(x!=2 &x!=3)
8、或或 if( !(x = = 2 | x = =3) 3对对“P1 & P2 & P3,假设,假设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的值呢?的值呢?注:简化求值的利用:第一个条件能控制第二个条件的执行。即第注:简化求值的利用:第一个条件能控制第二个条件的执行。即第二个条件只需在第一
9、个条件满足时才有意义。例如,条件:二个条件只需在第一个条件满足时才有意义。例如,条件:x的值的值非零;且非零;且x能整除能整除y: If ( x != 0 ) & (y%x =0) 4.3 i f 语句语句1. i f 语句的普通方式语句的普通方式 i f (表达式表达式P) 语句;语句; i f (表达式表达式P) 语句语句1 ; else 语句语句2;其中:其中: “语句、语句、“语句语句1和和“语句语句2可以是简单语句,也可以是简单语句,也可以是用可以是用 括起来的复合语句,也可以是括起来的复合语句,也可以是 或或 方式的方式的 i f 语句。语句。 “语句语句1后面的后面的“
10、; 是必需的。是必需的。 l 方式或看作一条完好的语句。例例4.1 输入三个实数,按小到大顺序输出。输入三个实数,按小到大顺序输出。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的值的值 2. p通常为关系表
11、达式或逻辑表达式,甚至通常为关系表达式或逻辑表达式,甚至是一个不含是一个不含 关系运算符的表达式、或一个关系运算符的表达式、或一个常量或一个变量。常量或一个变量。l if(x) if(x !=0)l if(!x) if(x = = 0)l 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;注:从最内层
12、开场,注:从最内层开场,else总是与它前面最近的未曾总是与它前面最近的未曾 配对的配对的if 配对,除非用花括号改动其配对关系。配对,除非用花括号改动其配对关系。 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 (grade =90)printf(“An); else if (grade =80) printf(“Bn); els
13、e if (grade = 70) printf(“Cn); else if(grade = 60) printf(“Dn); else printf(“Fn);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 配对。修正配对。修正bif(p1)if(p2)A elseB例例4.2 编程求编程求 y =main( ) int x,y; scanf(“%d
14、,&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 的值从键盘输入。的值从键盘输入。参见参见P1004. 条件运算符条件运算符假设有如下假设有如下 i f 语句:语句:i f (ab) max=a;else max=b;那么可以用下面的条件运算符处置:那么可以用下面的条件运算符处置:max = (ab) ? a : b;同样,对如下同样,对如下 i f 语句:语句:i f (ab) printf(“%d,a);else printf(“%d,b
15、);也可用下面的语句替代:也可用下面的语句替代: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;
16、仅在仅在 i f 语句内嵌的语句为赋值语句时,才干用条件语句内嵌的语句为赋值语句时,才干用条件 表达式取代该表达式取代该 i f 语句。语句。 条件表达式中的操作对象可以是不同的类型。条件表达式中的操作对象可以是不同的类型。如:如:x?a:b 当当x = 0时,条件表达式的值为时,条件表达式的值为bxy?1:1.5 当当 xy 时,条件表达式的值为时,条件表达式的值为 1.5, 否那么为否那么为 1。如:如:1. 找出两个数中最大的数找出两个数中最大的数2. 找出三个数中最大的数找出三个数中最大的数3. 恣意输入三条边恣意输入三条边(a,b,c)后,假设能构成后,假设能构成三角形,判别是等腰、
17、直角,还是普通三角形,判别是等腰、直角,还是普通三角形。三角形。例例4.3 求一元二次方程的解。求一元二次方程的解。#include “math.hint 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=bb-4ac; if (fabs(d) 1e-6) x1= (-b+sqrt(d)/(2a); x2= (-b-sqrt(d)/(2a); printf(
18、“有两个不相等的实根有两个不相等的实根: %8.4f and %8.4f n,x1,x2); else p=-b/(2a); q=sqrt(-d)/(2a); 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 1.语法语法: switch(表达式表达式P) case 常量表达式常量表达式1: 语句语句1; break;
19、 case 常量表达式常量表达式2: 语句语句2; break; case 常量表达式常量表达式n: 语句语句n; break; default: 语句语句m; break; 语句 1 常量表达式 1 相等 default:语句 m 表达式 P 不相等 语句 2 常量表达式 2 相等 不相等 语句 n 常量表达式 n 相等 不相等 其中:其中:“表达式表达式P 可以是任何类型的表达式普通为整型、可以是任何类型的表达式普通为整型、字符型、枚举型。字符型、枚举型。“常量表达式普通为整型常量表达式如:整数、字常量表达式普通为整型常量表达式如:整数、字符常量、枚举常量或整数常量表达式符常量、枚举常量或
20、整数常量表达式 的值必需互不的值必需互不一样。一样。 各个各个 case 出现的先后顺序对执行结果没有影响。出现的先后顺序对执行结果没有影响。 执行完一个执行完一个case后面的语句后,经过后面的语句后,经过break语句终语句终了该控制构造了该控制构造 假设一切的假设一切的 “常量表达式常量表达式 的值都不与的值都不与 “表达式表达式 的值相匹配,就的值相匹配,就 执行执行 default 后面的语句。后面的语句。 多个多个case可以共用一组执行语句。可以共用一组执行语句。 case后面假设有多个语句,可以不用后面假设有多个语句,可以不用 括起。括起。2. 阐明阐明:各个分支中的各个分支中
21、的“break;可省略,假设省略那可省略,假设省略那么执行方式不同,普通情况需保管。么执行方式不同,普通情况需保管。可以没有可以没有default : 语句语句m; break; 分支。此时分支。此时当当p的值与各个的值与各个case的判别值都不一致时,程序的判别值都不一致时,程序不执行任何部分。但最好保管不执行任何部分。但最好保管default分支,即分支,即使不需求使不需求default处置,也可以写作处置,也可以写作 “default : break;以便好读,防止误解。以便好读,防止误解。 由于由于p1,p2,.pn只能是整型或类似整型的常只能是整型或类似整型的常量表示符,这限制了它的
22、运用。此时可用量表示符,这限制了它的运用。此时可用if else 语句。语句。改写例子改写例子g = grade / 10;g = grade / 10; switch(g) / switch(g) /* * g g的计算是关键的计算是关键 * */ / case 10:case 10:case 9 : printf(“n A ncase 9 : printf(“n A n); break;); break;case 8: printf(“n B ncase 8: printf(“n B n); break;); break;case 7: printf(“n C ncase 7: print
23、f(“n C n); break;); break;case 6: printf(“n D ncase 6: printf(“n 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(“n F ncase 0: printf(“n F n); break;); break;default: break;default: break; 例子:例子:P106110P106110可以改为什么?可以改为什么?default: printf
24、(“Fn); break;例例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; 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; defa
25、ult: break; s = m ( 1 d ); printf(“Amount=%8.2f,s);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;*/ switch(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
26、7: d=0.1; break; default: d=0.15; break; s = m ( 1 d ); printf(“Amount=%8.2f,s);综合举例综合举例:设计一个菜单程序来选择做设计一个菜单程序来选择做+、*、/运算。运算。1、内容和要求、内容和要求程序运转后,给出程序运转后,给出5个菜单项的内容和输入提示。个菜单项的内容和输入提示。1. -Plus 2. -Minus 3. -Multiply 4. -Divided 5. -Goodby Input 1 5输入输入15来选择菜单项,其他输入那么不起作用。来选择菜单项,其他输入那么不起作用。l算法算法lS1:打印菜单界
27、面打印菜单界面lS2:输入选择值:输入选择值menulS3:if (menu=1) 那么产生两个随机的整数:那么产生两个随机的整数:x和和y并且并且显示显示 “x+y =信息,等待输入答案;并判别答案能否信息,等待输入答案;并判别答案能否正确正确lS4:if (menu=2) 那么产生两个随机的整数:那么产生两个随机的整数:x和和y并且并且显示显示 “x-y =信息,等待输入答案;并判别答案能否信息,等待输入答案;并判别答案能否正确正确lS5:if (menu=3) 那么产生两个随机的整数:那么产生两个随机的整数:x和和y并且并且显示显示 “x*y =信息,等待输入答案;并判别答案能否信息,等待输入答案;并判别答案能否正确正确lS6:if (menu=4) 那么产生两个随机的整数:那么产生两个随机的整数:x和和y并且并且显示显示 “x/y =信息,等待输入答案;并判别答案能否信息,等待输入答案;并判别答案能否正确正确lS7:if (menu=5) 那么打印那么打印“Goodbay并退出程序。并退出程序。ll#includel#includel#includel#includelmain()llint x,y,z,r,choo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省驻马店市正阳县校联考2024-2025学年九年级上学期12月月考语文试题(无答案)
- 2024-2025学年高一【数学(人教A版)】正弦函数、余弦函数的性质应用-教学设计
- 年终工作总结
- 安徽省天长市2024年疾控中心事业单位招聘招录108人管理单位遴选500题王牌题库带答案
- 计算机硬盘基础知识
- 初中英语语法指导之现在进行时课件
- 《班组长能力提升》课件
- 应急办重大危险源评估课件
- 感恩节主题班会课件-感恩世界
- 《与客户成交技巧》课件
- 水利工程合同工程完工验收工程建设管理工作报告
- 国家开放大学《西方经济学(本)》章节测试参考答案
- 雷雨英语话剧
- 多维阅读《Superkid Heroes》教学设计教案
- 浅析乡镇行政管理体制改革
- 水泥磨球配方案设计
- 《电子政务信息安全等级保护实施指南(试行)》
- SAP财务操作手册(共140页)
- 辛弃疾生平简介(课堂PPT)
- 小学生学业成绩等级制度-小学学业等级
- 过程审核VDA6.3检查表
评论
0/150
提交评论