第四章选择结构程序设计(最终版)-2013(1)_第1页
第四章选择结构程序设计(最终版)-2013(1)_第2页
第四章选择结构程序设计(最终版)-2013(1)_第3页
第四章选择结构程序设计(最终版)-2013(1)_第4页
第四章选择结构程序设计(最终版)-2013(1)_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 计算机科学学院计算机科学学院 本章内容: 4.1 4.1 关系运算及其表达式关系运算及其表达式 4.2 4.2 逻辑运算及其表达式逻辑运算及其表达式 4.3 if4.3 if语句语句 4.4 switch4.4 switch语句语句 4.5 4.5 选择结构程序举例选择结构程序举例 请做练习请做练习 计算机科学学院计算机科学学院 4.1 关系运算及其表达式 所谓“关系运算”实际上就是“比 较运算”,即将两个数据进行比较,判 定两个数据是否符合给定的关系。 计算机科学学院计算机科学学院 4.1.1 关系运算符及其优先次序 1关系运算符关系运算符 C语言提供语言提供6种关系运算符:种关系运算符:

2、 = = != 注意注意:在语言中,“等于”关系运算符是双等 号“= =”,而不是单等号“= ”(赋值运算符)。 计算机科学学院计算机科学学院 4.1.1 关系运算符及其优先次序 = = != 2优先级优先级 (1)在关系运算符中,前)在关系运算符中,前4个优先级相同,个优先级相同, 后后2个也相同,且前个也相同,且前4个高于后个高于后2个。个。 (2)与其它种类运算符的优先级关系)与其它种类运算符的优先级关系 关系运算符的优先级,低于算术运算符,但关系运算符的优先级,低于算术运算符,但 高于赋值运算符。高于赋值运算符。 计算机科学学院计算机科学学院 4.1.2 关系表达式 1关系表达式的概念

3、关系表达式的概念 所谓关系表达式是指,用关系运算符将两所谓关系表达式是指,用关系运算符将两 个表达式连接起来,进行关系运算的式子。个表达式连接起来,进行关系运算的式子。 例如: 下面的关系表达式都是合法的: ab,a+bc-d,(a=3)=b, (ab)= =(bc) 合法 计算机科学学院计算机科学学院 4.1.2 关系表达式 2关系表达式的值关系表达式的值逻辑值(非逻辑值(非“真真”即即 “假假”)。)。 语言没有逻辑型数据,用整数语言没有逻辑型数据,用整数“”表表 示示“逻辑真逻辑真”,用整数,用整数“”表示表示“逻辑假逻辑假”。 由于上述原因,关系表达式的值还可以参由于上述原因,关系表达

4、式的值还可以参 与其它种类的运算,例如算术运算、逻辑运算与其它种类的运算,例如算术运算、逻辑运算 等。等。 计算机科学学院计算机科学学院 例如,假设num1=3,num2=4,num3=5,则 (1)num1num2的值0 (2)(num1num2)!=num3的值 1 (3)num1num2num3的值1 思考题思考题:任意改变num1或num2的值,会影响整个表达式 的值吗?为什么? (4)(num1=0) 表达式表达式 语句语句 Y N 计算机科学学院计算机科学学院 4.3.1 if 语句 if语句的形式语句的形式 形式形式2:if (表达式表达式) 语句语句1 else 语句语句2;

5、表达式表达式 语句语句1 YN 语句语句2 计算机科学学院计算机科学学院 4.3.1 if语句 if语句的形式语句的形式 形式形式3:if (表达式表达式1) 语句语句1; else if (表达式表达式2) 语句语句2; else if (表达式表达式3) 语句语句3; else if (表达式表达式m) 语句语句m; else 语句语句n; 计算机科学学院计算机科学学院 表达式表达式1 表达式表达式2 语句语句1 表达式表达式3 表达式表达式4 语句语句2语句语句3语句语句4语句语句5 Y Y Y Y N N N N 计算机科学学院计算机科学学院 4.3.1 if语句 if语句的形式语句的

6、形式 说明说明: (1)表达式一般为关系表达式或逻辑表达式,也允许)表达式一般为关系表达式或逻辑表达式,也允许 是其它类型的数据,如,整型、实型、字符型等,若是其它类型的数据,如,整型、实型、字符型等,若 表达式的值为表达式的值为0,则按假来处理,若表达式的值为非,则按假来处理,若表达式的值为非0, 则按真来处理。则按真来处理。 (2)第)第2、3种形式的种形式的if语句,每个语句,每个else前都有一个分号,前都有一个分号, else必须和必须和if配套使用。配套使用。 (3)“语句语句1”和和“语句语句2”,可以只包含一个简单语句,可以只包含一个简单语句, 也可以是复合语句。也可以是复合语

7、句。 计算机科学学院计算机科学学院 4.3.1 if 语句 例例4-1 输入任意三个整数输入任意三个整数n1、n2、n3,求三个数中的最大值。,求三个数中的最大值。 算法:算法: 1.输入三个数。输入三个数。 2.从前两个数中选最大的赋值给从前两个数中选最大的赋值给max。 3.将将max与第三个数与第三个数n3比较比较,若若n3的值大于的值大于max,则将,则将 其值赋给其值赋给max。 4.输出输出max。 请依据算法画出流程图请依据算法画出流程图 计算机科学学院计算机科学学院 给给n1、n2、n3 输入数值输入数值 n1n2 max=n1 YN max=n2 n3max max=n3 Y

8、 N 输出输出max 试写程序试写程序 scanf(%d,%d,%d, if (n1n2) max=n1; else max=n2; if (n3max) max=n3; printf(max=%dn,max); 查看完整程序 计算机科学学院计算机科学学院 4.3.1 if语句 例例4-1 输入任意三个整数输入任意三个整数n1、n2、n3,求三个数中的最大值。,求三个数中的最大值。 #include “stdio.h” void main() int n1,n2,n3,max; printf(Please input three numbers:); scanf(%d,%d,%d, if (n

9、1n2) max=n1; else max=n2; if (n3max) max=n3; printf(The three numbers are:%d,%d,%dn,n1,n2,n3); printf(max=%dn,max); 演示程序演示程序 计算机科学学院计算机科学学院 4.3.1 if语句 例例4-2输入任意三个数输入任意三个数n1、n2、n3,按从大到小的顺序排序输出。,按从大到小的顺序排序输出。 算法:算法: 1.输入三个数。输入三个数。 2.从从n1和和n2两个数中选较大的赋值给两个数中选较大的赋值给n1 ,较小的赋值给,较小的赋值给n2。 3.从从n2和和n3两个数中选较大的

10、赋值给两个数中选较大的赋值给n2 ,较小的赋值给,较小的赋值给n3。 4.从从n1和和n2两个数中选较大的赋值给两个数中选较大的赋值给n1 ,较小的赋值给,较小的赋值给n2。 5.输出输出n1、n2、n3。 如果如果n1n2,交换交换 n1和和n2的值,如的值,如 何交换呢?何交换呢? 计算机科学学院计算机科学学院 4.3.1 if语句 给给n1、n2、n3 输入数值输入数值 n1n2 交换交换n1和和n2的值的值 n2n3 交换交换n2和和n3的值的值 n1n2 交换交换n1和和n2的值的值 输出输出n1、n2、n3 n y y y n n scanf(%d,%d,%d, if (n1n2)

11、 temp=n1;n1=n2;n2=temp; if (n2n3) temp=n2;n2=n3;n3=temp; if (n1n2) temp=n1;n1=n2;n2=temp; printf(%d,%d,%dn,n1,n2,n3); #include “stdio.h” void main() int n1,n2,n3,temp; printf(Please input three numbers:); scanf(%d,%d,%d, if (n1n2) temp=n1;n1=n2;n2=temp; if (n2n3) temp=n2;n2=n3;n3=temp; if (n1n2) tem

12、p=n1;n1=n2;n2=temp; printf(Three numbers after sorted: %d,%d,%dn,n1,n2,n3); 返回 演示程序演示程序 计算机科学学院计算机科学学院 4.3.2 if语句的嵌套 if语句的嵌套与嵌套匹配原则语句的嵌套与嵌套匹配原则 if语句允许嵌套。所谓语句允许嵌套。所谓if语句的嵌套是指,语句的嵌套是指, 在在“语句语句1”或(和)或(和)“语句语句2”中,又包含有中,又包含有if 语句的情况。语句的情况。 if语句嵌套时,语句嵌套时,else子句与子句与if的匹配原则:的匹配原则: 与在它上面、距它最近、且尚未匹配的与在它上面、距它最

13、近、且尚未匹配的if配对。配对。 计算机科学学院计算机科学学院 4.3.2 if语句的嵌套 例例4-3 有一个函数:有一个函数: 编写一个程序,输入编写一个程序,输入x的值,输出的值,输出y的值。的值。 Y= -1 0 1 x0 计算机科学学院计算机科学学院 4.3.2 if语句的嵌套 算法算法1: 1.输入输入x。 2.若若x0,y=1; 5.输出输出y。 输入输入x x0 y=-1 输出输出y n y y y n n Y=-1 请同学们自己写出程序。请同学们自己写出程序。 计算机科学学院计算机科学学院 4.3.2 if语句的嵌套 算法算法2: 1.输入输入x。 2.若若x=0, 若若x0,

14、则则y=-1; 否则,否则, y=0; 否则,否则,y=1; 3.输出输出y。 输入输入x x=0 x0 y=-1 YN y=0 y=1 输出输出y YN 请同学们写出程序请同学们写出程序 计算机科学学院计算机科学学院 4.3.2 if语句的嵌套 #include “stdio.h” void main( ) int x,y; scanf(“%d”, if (x=0) if (x=A printf(ch=%cn,ch); 返回 演示程序演示程序 计算机科学学院计算机科学学院 4.4 switch语句 1switch语句的一般形式语句的一般形式 switch(表达式表达式) case 常量表达式

15、常量表达式1:语句组;:语句组;break; case 常量表达式常量表达式2:语句组;:语句组;break; . case 常量表达式:语句组;常量表达式:语句组;break; default:语句组;:语句组;break; 计算机科学学院计算机科学学院 4.4 switch语句 2执行过程执行过程 (1)当)当switch后面后面“表达式表达式”的值,与某个的值,与某个case后后 面的面的“常量表达式常量表达式”的值相同时,就执行该的值相同时,就执行该case后面后面 的语句(组);当执行到的语句(组);当执行到break语句时,跳出语句时,跳出switch 语句,转向执行语句,转向执行

16、switch语句的下一条。语句的下一条。 (2)如果没有任何一个)如果没有任何一个case后面的后面的“常量表达式常量表达式”的的 值,与值,与“表达式表达式”的值匹配,则执行的值匹配,则执行default 后面的后面的 语句(组)。然后,再执行语句(组)。然后,再执行switch语句的下一条。语句的下一条。 计算机科学学院计算机科学学院 4.4 switch语句 3说明说明 (1)switch后面的后面的“表达式表达式”,可以是,可以是int、char和枚和枚 举型中的一种。举型中的一种。 (2)每个)每个case后面后面“常量表达式常量表达式”的值,必须各不相的值,必须各不相 同,否则会出

17、现相互矛盾的现象(即对表达式的同一同,否则会出现相互矛盾的现象(即对表达式的同一 值,有两种或两种以上的执行方案)。值,有两种或两种以上的执行方案)。 (3)case后面的常量表达式仅起语句标号作用,并不后面的常量表达式仅起语句标号作用,并不 进行条件判断进行条件判断。系统一旦找到入口标号,就从此标号。系统一旦找到入口标号,就从此标号 开始执行,不再进行标号判断,所以必须加上开始执行,不再进行标号判断,所以必须加上break 语句,以便结束语句,以便结束switch语句。语句。 计算机科学学院计算机科学学院 4.4 switch语句 (4)各)各case及及default子句的先后次序,子句的

18、先后次序, 不影响程序执行结果。不影响程序执行结果。 (5)用)用switch语句实现的多分支结构程语句实现的多分支结构程 序,完全可以用序,完全可以用if语句或语句或if语句的嵌套语句的嵌套 来实现。来实现。 计算机科学学院计算机科学学院 4.4 switch语句 例例4-5 从键盘上输入一个百分制成绩从键盘上输入一个百分制成绩score,按下列原,按下列原 则输出其等级:则输出其等级: score90,等级为,等级为A; 80score90,等级为,等级为B; 70score80,等级为,等级为C; 60score70,等级为,等级为D; score0 输出输出 “非二次非二次 方程方程”

19、 输出输出 两个两个 相等相等 的实的实 根根 a b 2 a acbb x 2 4 2 1 a acbb x 2 4 2 2 复根:复根: 实部:实部: a b p 2 虚部:虚部: a acb q 2 )4( 2 输出两个实根:输出两个实根: x1,x2 输出两个复根:输出两个复根: p+qi,p-qi 例例4-7 计算机科学学院计算机科学学院 例例4-7 #include math.h main() float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f”, disc=b*b-4*a*c; if (fabs(disc)1e-6) x1=(-b+sqrt(d

20、isc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(x1=%7.2f,x2=%7.2fn, x1, x2); else p=-b/(2*a); q=sqrt(fabs(disc)/(2*a); printf(“x1=%7.2f + %7.2f in“, p, q); printf(”x2=%7.2f - %7.2f in“, p, q); 返回 演示程序演示程序 计算机科学学院计算机科学学院 main() long profit; int grade; float salary=500; printf(Input profit: ); scanf(%ld, grade= (profit 1) / 1000; switch(grade) c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论