选择结构1.ppt_第1页
选择结构1.ppt_第2页
选择结构1.ppt_第3页
选择结构1.ppt_第4页
选择结构1.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第四章 选择结构,本章要点: 正确使用逻辑表达式 掌握用if语句实现选择结构 掌握条件运算符的使用,2,4. 关系运算符和逻辑运算符,.1.1 关系运算符及其运算结果 1. 关系运算符及其优先次序 语言中的关系运算符有种: 、! 优先次序:前种同级,高于后种(后种同级),算术运算符 (高) 关系运算符 赋值运算符 (低),(s-d)(b+c) (bd),例如: x != y s - db+c bd,3,2. 关系表达式 关系表达式就是将两个表达式用关系运算符连接起来。 如:(ab)(by 、s+fd 关系表达式的值为逻辑值,“真”或“假”. 注意: 语言没有逻辑型数据,关系表达式的真、假是

2、以 数值“”代表“真”,以“”代表“假”。 例1: a=3, b=2, c=1 , 下列表达式的值是? cb; (a-b) = = 1; b+cbc; (自左至右 ),4,用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。 1. 逻辑运算符及其优先次序 C语言提供三种逻辑运算符: else printf(%d,y); 3. if(表达式) 语句序列 else 语句序列 2 例: if(xy) t=x;x=y;y=t; else printf(“max=%dn,x);,14,或 if( ) if( ) 语句 (内嵌if ) else 语句 2注:每个else都与距其最近的 if 配对。,

3、内嵌if, 内嵌if,if( ) if( ) 语句 else 语句 else if( ) 语句 else 语句,2. if语句的嵌套 在if语句中又包含一个或多个if语句的形式。 一般格式如下:,15,I if 语句的常用格式: if(表达式) 语句 1 else if(表达式2) 语句 2 else if(表达式3) 语句 3 else if(表达式m) 语句 m else 语句 n,仅执行表达式为真的else if后的内嵌语句,若所有的表达式值都为0,则执行最后一个else后的内嵌语句.,16,例如: 已知 编一个程序,输入一个 x的值,输出y值。,程序为: main( ) int x,

4、y; scanf(“%d”, ,17,语言增设了一个条件操作符,它是唯一的三目操作符。 格式: 表达式 ?表达式:表达式 功能: 判断表达式的值,该值为“非0”,则取表达式2 的值, 为“ 0 ”时,取表达式3的值。 如: max=ab ? a : b 若 a=3, b=2, 则 max= 说明: (1) 条件运算符优于赋值运算符。 (2) 条件运算符的结合方向为“自右向左”。 例1:当a=1,b=2,c=3, d=4 时, 表达式 ab ? a : cd ? c : d , 值为:? 例2: 若 x=1,y=0,a=3,b=-3 表达式 (yx?a:b) else printf(“%d”,b

5、);,printf(“%d”,ab ? a : b);,(4) 条件表达式中的表达式的类型可以与表达式和表达式的类型不同。条件表达式值的类型为二者中较高的类型。 如: xy ? 1.2 : 6 , 当xy成立时条件表达式的值为1.2 ,否则为实型数据6.0。 c=xy ? 1 : s , 当xy成立时c=1, 否则c= s。 例: main( ) char ch; scanf(“%c”, printf(“%c”, ch) 输入 a,19,switch语句 问题:为什么引出switch语句? 该语句为开关语句,解决多分支的情况。 格式:switch(表达式) case (常量表达式):语句块;

6、case (常量表达式):语句块; case (常量表达式m):语句块m; default :语句块n; 说明:(1) 表达式可以是整型、字符型、枚举数据型的表达式。 (2) 计算表达式的值; (3) 找到与表达式的值相同的case常量表达式,执行该case后边的语句块,之后依次往下执行语句块。,4.4 switch 语句,20,(3)case后的语句序列可以是一条语句,也可以是多条语句,此时多条语句不必用括号括起来。 (4) case后的“常量表达式”只起到语句标号的作用,而不进行条件判断,故在执行完某个 case后的语句序列后,将自动转移到下一个case继续执行。其计算过程为:,21,a.

7、 计算表达式的值; b. 找到与表达式的值相同的case常量表达式,执行该case后边的语句序列,之后依次往下执行语句块。,表达式,语句序列1,语句序列2,语句序列n,语句序列n+1, ,22,若每个语句序列的最后一条语句均为break语句,则执行流程为:,表达式,语句序列1,语句序列n,语句序列n+1,语句序列2,23,例如:根据考试成绩的等级打印出百分制分数段: 上述程序可写成多分支情况: switch( grade ) case A : printf(“85100n”) ; break; case B : printf(“7084n”); break; case C: printf(“6

8、069n”); break; case D :printf(“60n”); break; default : printf(“error ”); 若gread= A时,输出结果为? 当 grad= B时,输出结果为: 70 84,24,流程图为:,grade,输出 “85100”,输出 “60”,输出 “60-69”,输出 “error”,输出 “70-84”,25,(5) case和default 的次序可以交换。 main( ) int c=3; switch(c) case 1: c+; default: c+; case 2: c+; printf(c=%dn, c); ,case 3

9、: c+;,26,(6)多个case可以执行同一个语句序列。 switch(c=getchar( ) case y : case Y: printf(“You are right.n”); ,27,例1 写一程序,判断某一年是否闰年。 其中:leap代表闰年的信息,leap=1闰年,leap=0 非闰年 程序为: main( ) int year, leap; scanf(“%d”, ,28,例 运输公司对用户计算运费。距离(s)越远,每公里运费越低。折扣为d (discount),每公里每吨货物的基本运费为p (price),货物重w (weight),总运费f (freight) , f=p * w * s * (1- d), 设 c=s/250。,输入: 1989 结果为: 1989 is not a leap year 输入: 2000 结果为: 2000 is a leap year,29,程序为: main( ) int c,s; float p, w, d , f ; scanf(“%f , %f , %d”, case 4: case 5:,多个case可共用一组执行语句,30,case 6: case7: d=8 ; break ; case8: case9

温馨提示

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

评论

0/150

提交评论