C语言程序设计教程 第4章.ppt_第1页
C语言程序设计教程 第4章.ppt_第2页
C语言程序设计教程 第4章.ppt_第3页
C语言程序设计教程 第4章.ppt_第4页
C语言程序设计教程 第4章.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第四章 选择结构程序设计 4.1 关系运算符与关系表达式 4.2 逻辑运算符与逻辑表达式 4.3 if语句 4.4 switch语句 4.5 结构嵌套程序举例 选择结构:三种基本结构之一,根据所指定的条件是否 满足,决定从给定的两组或两组以上操作中选一。 实现方式: if (关系表达式) 语句1 else 语句2 例如:判定某一年是否为闰年: if(y%4=0 else printf(“不是闰年n”); 4.1 关系运算及其表达式 所谓“关系运算”实际上就是“比较运算”,即将 两个数据进行比较,判定两个数据是否符合给定 的关系。 例如,“a b”中的“”表示一个大于关系运算。 如果a的值是5,b的值是3,则大于关系运算“” 的结果为“真”,即条件成立;如果a的值是2,b 的值是3,则大于关系运算“”的结果为“假”,即 条件不成立。 4.1.1 关系运算符及其优先次序 1关系运算符 2优先级 (1)在关系运算符中,前4个优先级相同,后2个 也相同,且前4个高于后2个。 例如:int a=1; 表达式 a=30 的值 真?假? (2)与其它种类运算符的优先级关系。 算术运算符关系运算符赋值运算符 例如:a=81+2 a= ? 大于 小于大于等于 小于等于等于不等于 c+d (3)比较a=3、b=5的值:a=3=b 2关系表达式的值逻辑值(非“真”即“假”)。 由于语言没有逻辑型数据,所以用整数“”表示“逻 辑真”,用整数“”表示“逻辑假”。 例如,假设a=3,b=4,c=5,则: (1)ab的值为0。 (2)(ab)!=c的值为1。 (3)a=0”。如果 需要描述“0=0) if(xy) z=x; x+; printf(“%dn“,z); 表达式 语句 假(0) 真(1) l输入一个数,如果该数大于等于0,则输 出它的平方根,如果它小于0,则不作任 何处理。 l分析:1)需要一个变量存储输入的数, 定义一个变量x。 2)使用选择if语句来实现。 例1 (2) 第2种形式为 :if else ifelse语句的一般形式是: 流程图如下: if (表达式 ) 语句1 else 语句2 如果“表达式”为真,则执行语句1; 如果“表达式”假,则执行else后面的语句2。 例如: if(xy) z=x; else z=y; 表达式 语句1语句2 假(0) 真(1) 例3:输入2个数,比较大小,然后将较大的 数输出。 分析:1)需要定义2个变量a,b来存放输入 的2个数。 2)若a大于b,输出a,否则输出b。 例2:修改例1,当输入的数小于0时,提示信息 错误。 (3) 第3种形式为 ifelseif 形式 if else if语句的一般形式是: if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else if(表达式n)语句n else 语句 n+1 表达式1 语句1语句2 假(0) 真 1 表达式2 真 1 表达式n 假(0) 语句n 语句n+1 0 真 1 例4:根据学生成绩划分优、良、中、及格、差等级。 int score; if (score=90) grade=“优”; else if (score=80) grade=“良”; else if (score=70) grade=“中”; else if (score=60) grade=“及格”; else grade=“差”; 依次判断表达式的值,当出现某个值为真时,则执行其对应 的语句,然后跳到整个if语句之外继续执行程序;如果所有表达 式均为假,则执行最后else语句,然后继续执行程序。 4.3.2 if语句的嵌套 在 if 语句中又包含一个或多个 if 语句的情况称为if语 句的嵌套。当流程进入某个选择分支后又引出新的 选择时,就要用嵌套的if语句。 嵌套的if语句的一般形式是: if ( ) if ( ) 语句1 else 语句2 else if ( ) 语句1 else 语句2 内嵌if 内嵌if 例如:求a、b、c三数中的最大数max。 if (ab) if(ac) max=a; else max=c; else if(bc) max=b; else max=c; 当有许多 if 和 else 时,如何决定哪个 if 与哪个 else 配对呢? 例如: if(score60) if(score =80) printf(“优n”); else printf(“不及格“); else应该与第一个if配对,还是第二个? 答案是:else与第二个if配对。 else与 if 配对的规则:else语句总是与在它上面、 距它最近、且尚未匹配的 if 配对,除非用花括号 表示出其它选择。如果确实希望else与第一个 if 匹 配,那就得加花括号。例如: if(score60) if(score =80) printf(“优n”); else printf(“不及格“); 例4.3 有一函数: -1 (x0) , 编写一程序,输入一个x,输出y值。 main() int x,y; scanf(“%d”, printf(“x=%d,y=%dn”,x,y); 请判断以下几个 if 语句那个正确,那个不正确? if (x0) y=1; if (x=0) y=0; if (x0) y=1; if (x=0) y=0; if(x=0) if (x0) y=1; else y=0; else y=-1; y=-1; if(x!=0) if(x0) y=1; else y=0; y=0; if(x=0) if(x0) y=1; else y=-1; if (x0) y=1; if (x=0) y=0; if (x0) y=1; if (x=0) y=0; (正确) if(x=0) if (x0) y=1; else y=0; else y=-1; (正确) y=-1; if (x!=0) if(x0) y=1; else y=0; y=0; if (x=0) if(x0) y=1; else y=-1; 4.3.3 条件运算符 (1)由运算符“ ?”和“ :”组合而成 (2)运算规则:对 e1?e2 :e3 如果e1的值为非0(即逻辑真), 则运算结果等于e2的值; 否则,运算结果等于e3的值。 (3)优先级: 算术运算符 关系运算符 条件运算符 赋值运算符 例如: max=(ab)? a:b (a=2,b=1) max=ab? a:b max=(ab?a:b)+1 max=ab?a:b+1 (4)结合性: 从右到左(即右结合性) 例如: ab ? a:cd ? c:d (假如:a=1,b=2,c=3,d=4) 从右至左结合,相当于: ab ? a: ( cd ? c:d) (5)对于e2 、e3,不仅可以是算术表达式,还可以是赋值表 达式或函数表达式。例如: ab? max=a : printf(“%d”,b) 相当于: if(ab) max=a ; else printf(“%d”,b) ; 完整程序: main() int a=3,b=2 ; ab? max=a : printf(“%d”,b) ; 4.3.3 switch语句 当程序面临多重选择时, ifelseif 语句能够满足需要,但在大多 数情况下, 使用switch语句则更为方便。 switch的一般形式: switch (表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default:语句 n+1 表达式可以是数值型或者 字符型的,表达式的值为 开关值。语句中各个case 后面的常量表达式值必须 不相同,否则将会出现矛 盾。 switch语句控制流程:首先计算switch语句括号中的表达式值,然后依 次与每一个case中的常量进行比较,一旦发现了某个能匹配的值,就执 行该case后面的语句组,如果没有相匹配的值,则执行default后面的语 句组。执行完一个case后面的语句后,流程控制转移到下一个case继续 执行。如果执行完一个case后面的语句后,想退出switch结构,可以用 break 语句实现。 例如:要求按照考试成绩的等级打印出分数段。 switch (grade) case A :printf(“85100n”) ; case B :printf(“7084n”) ; case C :printf(“6069n”) ; case D :printf(“=90 为A等

温馨提示

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

评论

0/150

提交评论