《选择结构设计》PPT课件.ppt_第1页
《选择结构设计》PPT课件.ppt_第2页
《选择结构设计》PPT课件.ppt_第3页
《选择结构设计》PPT课件.ppt_第4页
《选择结构设计》PPT课件.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第5章 选择结构程序设计,5.1 关系运算符和关系表达式,5.1.1 关系运算符及其优先次序,1. C语言的6种关系运算符: = = = !=,2. 优先次序, = (同级) = = != (同级),高,低,3. 结合方向: 左结合 注意:关系运算符的优先级低于算术运算符,但高于赋值运算符。,例如: aa+b 等效于 c(a+b) 算术运算符 ab=c 等效于 (ab)=c 关系运算符 a=bc 等效于 a=(bc) 赋值运算符,5.1.2 关系表达式 1概念:用关系运算符将两个表达式连接起 来的式子,称关系表达式。,例:a/21+3b (a=3)(b=5) ab)(bc),2关系表达式的值 关系表达式成立时, 其值为1 关系表达式不成立时, 其值为0 例:若a=3,b=2,c=1 则 ab 表达式的值为1 (ab)= =c 表达式的值为1 b+cb 表达式的值为1 f =abc 表达式的值为0,f=(ab)&(bc),5.2.1 逻辑运算符及其优先次序 1. C语言的三种逻辑运算符 & 逻辑与 逻辑或 ! 逻辑非 一目(元)运算符,5.2 逻辑运算符和逻辑表达式,二目(元)运算符,2. 优先次序 ! & ,高,低,3. 结合方向,! 右结合 & 左结合,5.2.2 逻辑表达式 概念: 用逻辑运算符将表达式连接起来的式 子就是逻 辑表达式。,例: !a a+3 & b x y (i3)&(j=4),逻辑表达式的值应该是一个逻辑量“真”或“假”。 C给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。,例:若a=4,b=5 !a a&b a b !a b 4&0 2,2. 逻辑表达式的值,值为,值为,值为,值为,值为,0,1,1,1,1,例:a&b&c,a,b,c,注:在进行逻辑表达式的求解中,并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。,非0,0,0,0,非0,非0,1,0,例:a=1 b=2 c=3 d=4 m=1 n=1 (m=ab) & (n=cd) 该逻辑表达式的值为:,0,该逻辑表达式执行结束后m的值为:,0,该逻辑表达式执行结束后n的值为:,1,5.3 if 语句,5.3.1 if语句的三种形式,2if(表达式)语句1; else 语句2;,1if(表达式)语句;,例:if (xy) printf(“%d“,x);,例:if (xy) printf(“%d“,x); else printf(“%d“,y);,例:编程,判断任意输入一个整数x是不是正数,若是则将该数输出。 程序如下: main() int x; scanf(“%d”, ,例:编程,判断任意输入的一个正整数是不是偶数,若是则输出YES,否则输出NO。 程序如下: main() int x; scanf(“%d”, ,3 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式m) 语句m; else 语句n;,说明: if后面的(表达式)一般为逻辑表达式或关系表达式,系统对表达式的值进行判断,若为0按“假”处理,若为非0,按“真”处理。因此,表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型,实型,字符型,指针型数据)。如: if (3) printf(“O.K.”); 是合法的。 if (A) printf(“%d”,a);也是合法的。, 后面两种形式的if语句中,每个else前面有一个分 号,不要错认为是两个语句。, if 和else后面有多个语句时,可以使用复合语句,即用“”将多个 语句括起来。,例: if (a+bc ,例输入一个数,若大于零则输出。,main( ) float a; scanf(“%f“, ,main() float a,b,t; scanf(“%f,%f “, ,a,b,t,方法1:,例输入两个实数,按由小到大次序输出。,方法2:,main() float a,b; scanf(“%f,%f“, ,例输入三个数,按由小到大顺序输出。,main( ) float a,b,c,t; scanf(“%f,%f,%f“, ,34,12,34,17,34,34,5.3.2 if语句的嵌套 在 if 语句中又包含一个或多个 if 语句称为 if语句的嵌套。其一般形式为: if ( ) if ( ) 语句1; else 语句2; else if ( ) 语句3; else 语句4; 说明:应注意 if 与 else 的对应关系,else总是与它上面最近的 if 配对,若if与 else 的数目不一致,可以加 来确定配对关系。,内嵌 if 语句,内嵌 if 语句,main( ) int x,y; scanf(“%d“, ,if (x0) y= -1; else if (x= =0) 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;,5.3.3 条件运算符 1. 一般形式:表达式1 ? 表达式2:表达式3 2. 执行过程:如果表达式1为真,则条件表达式取表达式2的值,否则取表达式3的值。,取表达式 2 的值,if (ab) max=a; else max=b;,max=(ab)?a:b;, 说明: 条件运算符是C中唯一的一个三目运算符。 条件运算符优先于赋值运算符。 条件运算符的结合方向为 “右结合”。 例:ab?a:cd?c:d 相当于 ab?a:(cd?c:d) 条件运算符不能取代一般的if语句,只有在if语 句中内嵌的语句为赋值语句且两个分支都给同一 个变量赋值时才能代替 if 语句。 表达式 1、2、3可以是任意类型的。(字符型,整型、实型),如: x ? a : b x为整型变量 xy ? 1:1.5 结果为实型, 条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。,例:输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。程序如下:,main( ) char ch; scanf(“%c“, ,5.4 switch语句,二说明: (1) switch后面括弧内的“表达式”,可以是任意类型的表达式。 (2) 当表达式的值与某一个 case 后面的常量表达式 的值相等时,就执行此 case 后面的语句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default后面的语句。 (3) 每一个 case 的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。 (4) 各个 case 的出现次序不影响执行结果。,(5) 多个case可以供用一组执行语句。如:,case A : case B : case C :printf(“60n“);,(6) 执行完一个 case 后面的语句后,流程控制转移到下一个 case 继续执行。 “case常量表达式”只是起语句标号的作用,并不是在该处进行条件判断。,若grade= A ,则将输出: 85100 7084 6069 60 error,switch(grade) case A: printf(“85100n“); case B: printf(“7084n“); case C: printf(“6069n“); case D: printf(“60n“); default : printf(“errorn“); ,break;,break;,break;,break;,若grade=A , 则输出结果为: 85100,break语句可以使流程跳出switch结构,继续执行switch语句下面的语句。,5.5 程序举例,例任给三角形的三边,判断该三角形是等边、等腰、直角或一般。,分析: 用变量a, b, c表示三角形三条边的长,#include “math.h“ main( ) int a,b,c; scanf(“%d%d%d“, ,例. 写程序,判断某一年是否闰年。,闰年的条件是符合下面二者之一: 1.能被4整除,但不能被100整除; 2.能被4整除,又能被400整除。,main( ) int year,leap; scanf(“%d“,方法1:if 语句的嵌套,if (leap) printf(“%d is “,year); else printf(“%d is not“,year); printf(“a leap year .n“); ,方法2:if 语句的第三种形式,main( ) int year,leap; scanf(“%d“,if (leap) printf(“%d is “,year); else printf(“%d is not“,year); printf(“a leap year .n“); ,例: 求 方程的解,有以下几种可能:,1. ,不是二次方程。否则,2. ,有两个相等实根。,3. ,有两个不等实根。,4. ,有两个共轭复根。,#include “math.h“ main( ) float a,b,c,disc,x1,x2,p,q; scanf(“%f,f,%f“,else p=-b/(2*a); q=fabs(sqrt(-disc)/(2*a); printf(“%8.4f+%8.4f i n“, p, q); printf(“%8.4f-%8.4f i n“, p, q); ,例. 给一百分制成绩,要求输出成绩等级A,B,C,D,E。90分以上为A ,80-89分为B,70-79分为C,60-69分为D,60分以下为E。,根据score确定分数段temp,grade =A,grade =B,grade =C,grade=E,grade =D,0,8,7,6,5,4,3,2,1,9,读入学生成绩score,score100,Y,N,输出grade,输入数据有误,结束,main( ) int score,temp;

温馨提示

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

评论

0/150

提交评论