c_program_5.ppt_第1页
c_program_5.ppt_第2页
c_program_5.ppt_第3页
c_program_5.ppt_第4页
c_program_5.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 选择结构程序设计,主要内容,5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式 5.3 if语句 5.4 switch语句 5.5 程序举例,要点: 关系表达式 逻辑表达式 选择结构程序设计,5.1 关系运算符和关系表达式,“关系运算”实际上是”比较运算” 5.1.1 关系运算符及其优先次序 C语言提供6种关系运算符 (参见P365) (大于) = (大于或等于) = (等于) != (不等于),说明: 关系运算符的优先级 低于 算术运算符 关系运算符的优先级 高于 赋值运算符,5.1.2 关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值

2、表达式,字符表达式)连接起来的式子,称关系表达式 例:ab a+bb+c (a=3)(b=5) ab)(bc),关系表达式的值是一个逻辑值,即“真”或“假”,例:a=3,b=2,c=1,则 关系表达式”ab”的值为“真”,表达式的值为1 关系表达式“(ab)=c”的值为真,表达式的值为1 关系表达式“b+ca”的值为“假”,表达式的值为0,假如:a=3,b=2,c=1,求下列表达式的值: d=ab 相当于d=(ab) 表达式的值为1 f=abc 相当于f=(abc) 表达式的值为0,注意理解,5.2 逻辑运算符和逻辑表达式,5.2.1 逻辑运算符及其优先次序 C语言提供3种逻辑运算符 (1)

3、int i = 3, j = 3; double x = 0.0;,x | (i ,+x,-x 执行过程:,(2) if(表达式) 语句1 else 语句2 例: if (xy) printf(“%d”,x); else printf(“%d”,y); 执行过程:,有分号!,(3) if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句n 执行过程:,注意:if后面的表达式类型可以是逻辑表达式或关系表达式,也可是任意的数值类型(包括整型、实型、字符型等) 例如:试写出下列语句的输出结果 if(3) print

4、f(“OK”); if(a) printf(“%d”, a); if(a=5) printf(“%d”, $); /假设运行前a=0 if(a=5) printf(“%d”, $); /假设运行前a=0 int a=6; (讨论:如果scanf(“%d”,5.3.2 if语句的嵌套 含义 在if语句中又包含一个或多个if语句称为if语句的嵌套 形式 if() if() 语句1 else 语句2 else if() 语句3 else 语句4,if else 配对原则 缺省 时,else总是它上面离它最近的未配对的if配对,如果if和else的数目不一样,可以加花括弧来确定配对关系。 if (ex

5、pr1 ) if(expr2 ) statement1 else statement2,思考:怎样配对?,if和else的数目一样时,运行结果: 1 1, 2,运行结果: 3, 3,例A5.1 分析下列程序的输出结果,熟悉条件语句的嵌套使用方法和else子句的配对问题,#include void main() ,例5.1 输入两个实数,按代数值由小到大的次序输出这两个数。,运行结果:,输入,交换次序,输出,printf(%5.2f,%5.2f,a,b);,if(ab) t=a;a=b;b=t; ,float a,b,t; scanf(%f,%f,思考:1)若输入三个数,按由小到大的次序输出 2

6、)若输入四个数,按由小到大的次序输出,括号不要少!,算法1: 算法2: 输入x 输入x 若x0,则y=1 若x=0,则y=0 输出y 若x0,则y=1 输出y,-1 (x0),#include void main() int x,y; scanf(“%d”, ,上例中的程序段有四个,请判断哪个是正确的? 程序1: if(x=0) if(x0) y=1; else y=-1;,程序4: if(x=0) if(x0) y=1; else y=0; else y=-1;,程序2: y=-1; if(x!=0) if(x0) y=1; else y=0;,注意配对原则,5.3.3 条件运算符 格式:

7、d1 ? d2 : d3 功能 首先计算d1表达式的值: 如果d1的值为非0,整个表达式的值为d2的值 如果d1的值为0,整个表达式的值为d3的值 整个表达式的类型取决于d2和d3中类型高的一个 举例 int a=3, b=4; a b ? a : b; /表达式的值为4 用途:可求出两个数中较大者,操作数,运算符,说明: (1)条件运算符优先级高于赋值运算符 ,低于关系运算符 和算术运算符 (2)条件运算符的结合方向为“自右至左” (3)“表达式2”和“表达式3”不仅可以是数值表达式,还可以 是赋值表达式或函数表达式 (4)条件表达式中,表达式的类型可以与表达式和表达 式的类型不同,例A5.

8、2 分析下列条件表达式程序的输出结果,1,2,3 2 3 1,3,3 5 2,3,5 3 2,3,5,开关分支语句( switch语句) 多路分支语句,有时会比较便捷,switch( E) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; ,一般形式,关键字,5.4 switch语句,说明 E1,E2,En是整型表达式,且值必须互不相同,通常使用int型数字和字符组成的表达式。若不为int型,则将会转换为int型 语句组由若干语句组成,也可为空 case后可包

9、含多个可执行语句,且不必加 多个case可共用一组执行语句 switch可嵌套 执行过程注意事项 E的值依次与E1、。En比较,当发现某两个相等时便停止下面的比较,转去执行其后的语句序列 执行语句序列时,从头开始逐条执行,遇到break语句时,则退出该开关语句。若未遇到break语句,则继续执行该语句序列后面的语句序列,而不管Ei的值是否与E的值相等 开关语句的右花括号具有退出该开关语句的作用 default语句可以省略,也可放在开关语句花括号内的任何位置,如: case A: case B: case C: printf(“score60n”); break; .,例: switch(sco

10、re) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default: printf(“data error!”); ,运行结果: score为5时,输出: Very good! Good! Pass! Fail! data error!,例A5.3 要求按照考试成绩的等级打印出百分制分数段 A:85-100 B:70-84 C:60-69 D:60,switch(grade) case A: printf(“85-100 “);b

11、reak; case B: printf(“70-84 “); break; case C: printf(“60-69 “); break; case D: printf(“60 “); break; default : printf(“error“); ,if (grade= =A) printf(“85-100 “); else if (grade= =B) printf(“70-84 “); else if (grade= =C) printf(“60-69“); else if (grade= =D) printf(“60“); else printf(“error“);,例A5.4

12、 给出一百分制成绩,要求输出成绩A,B,C,D,E,90分以上为A,8089分为B, 7079分为C, 6069分为D,60分以下为E, switch(grade/10) / switch(int)(grade/10) case 10: case 9: printf(“An”);break; case 8: printf(“Bn“); break; case 7: printf(“Cn“); break; case 6: printf(“Dn“); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“En“); brea

13、k; default:printf(“errorn“); ,运行结果:a=2,b=1,#include void main() int x,y,a=0,b=0; scanf(“%d,%d”, ,例A5.5 switch语句的嵌套,5.5 程序举例,例56 求2方程的解。,基本的算法: ,不是二次方程。 b2,有两个相等实根。 b2 ,有两个不等实根。 b2 ,有两个共轭复根。,练习5,A5.1 (A5.1.1.c、 A5.1.2.c) 、 A5.2(A5.2.c) 分析代码 输入代码 运行,查看效果 例5.6 (ex5.6.c) 分析代码 输入代码 运行,查看效果 P112, 5.9题(5.9.c) 自测题(见后),一 填空题,下列程序运行后的输出结果是 【 】 。 main( ) int a, b,c; a=10; b=20; c=(a%b1); printf(%d

温馨提示

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

评论

0/150

提交评论