工学第五章选择结构程序设计课件_第1页
工学第五章选择结构程序设计课件_第2页
工学第五章选择结构程序设计课件_第3页
工学第五章选择结构程序设计课件_第4页
工学第五章选择结构程序设计课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 选择结构程序设计本章重点、难点: 1、运算符的优先级 2. 逻辑运算符 3. If else 的应用 4、switch 结构的应用5.1 关系运算符和关系表达式关系运算即比较运算,将两个值进行比较。 运算符运算关系实例大于ab=大于等于a=b小于21=小于等于cb ; /*c的值为0*/d=a+22&a3| |逻辑或s6!逻辑非!a其中,!运算是单目运算,其它为双目运算符.优先级(从高到低):!(非)- &(与)- | (或)5.2 逻辑运算符和逻辑表达式ab!a!ba & ba |b非0非00011非0001010非01001001100逻辑运算真值表: 5.2 逻辑运算符和逻辑表达

2、式2.复杂逻辑关系的表示 在实际应用中,经常会遇到描述复杂的关系。如:判断 x是否大于等于5或小于3。此类关系的描述在程序设计中会大量使用。035x=50-23-2x&x=a&ch=A&chc+d&a=b*34注意:在无法确定优先级时,加()区分。简化表达式。 5.2 逻辑运算符和逻辑表达式4.在逻辑运算中,如果逻辑值能确定,则不需再进行运算。1)(表达式1)|(表达式2)|。 表达式1为真,则不再进行其他表达式的求值2)(表达式1)&(表达式2)&。 表达式1为假,则不再进行其他表达式的求值例:main() int a=0,b=0,k; k=+a | b+; printf(nk=%d,b=%

3、d,k,b); a=0; k=a & +b; printf(nk=%d,b=%d,k,b);实例运行 5.3 if 语句1.if (表达式) 语句 格式:if (expression) stat1;语句或复合语句。流程图:e?yesstat1;no入口出口 5.3.1 If语句的三种格式例:输入两个实数a,b,使ab) t=a; a=b; b=t;printf(%f,%f,a,b);例:输入三个数a,b,c,按由小到大的顺序输出这三个数(即使abb) t=a; a=b; b=t;if (ac) t=a; a=c; c=t;if (bc) t=b; b=c; c=t;printf(%f,%f,%

4、f,a,b,c); 5.3 if 语句2.if else 结构格式:if(expression) stat1;else stat2;流程图:e?yesstat1;stat2;no入口出口举例:输出| x |。#include /*q3.c*/main ( ) int x ; scanf ( “%d” , &x); if (x=0) printf (“%d” , x); else printf( “%d” , -x);实例运行 5.3 if 语句3.if else if结构(多分支)格式: if(e1) stat1; else if(e2) stat2; else if(e3) stat3; e

5、lse if(en-1) statn-1; else statn; 框图:e1?ystat1;ne2?ystat2;出口nen-1?ystatn-1;nstatn;n-1个条件,满足某个条件,执行对应的语句,然后到出口。 5.3 if 语句征税问题: 1000以下税率为3%10002000税率为4% 20003000税率为5% 3000以上税率6% 输入收入求应缴税款。#include /* q4.c */void main(void) float x ,rate; scanf(“%f ”,&x); if(x1000) rate=0.03; else if(x2000) rate=0.04;

6、else if(x3000) rate=0.05; else rate=0.06; printf(“%f ”,x*rate); 实例运行 5.3 if 语句练习:输入一个分数,将百分制转化为五分制。90分以下 打印 A80-90 打印 B70-80 打印 C60-70 打印 D60 以下 打印 E#include /* q5.c */void main(void) int a; scanf (“%d”, &a); if (a=90) printf( “The score is A”); else if (a=80) printf(“ The score is B”); else if (a=7

7、0) printf(“The score is C”); else if (a=60) printf(“The score is D”); else printf( “The score is E”);实例运行 5.3 if 语句4.if语句的嵌套对于如下的结构: if(e1) stat1; else stat2;在stat1或stat2中又含有if结构:if(e2) stat3;else stat4;称为if结构的嵌套。各种if结构都可以嵌套。说明: 书写采取缩进形式,便于区分。 else与最近的if 相匹配,从内到外。x=-1;if (x!=0) if (x0) y=1; else y=0

8、;结果? 5.3 if 语句 如求符号函数: -1 (x0)#include void main ( void) int x,y ; scanf (“%d” , &x); if (x0) y=-1; else if (x=0) y=0; else y=1; printf (“x=%d,y=%dn”,x,y) ;外层内层在外层else语句中,含有一个if结构。自学:P1015.3 if 语句举例:求一元二次方程ax2+bx+c=0的根。P108#include /* q6.c */#include void main(void) float a,b,c,d,e,x1,x2; scanf(“%f,

9、%f,%f”,&a,&b,&c); d=b*b-4.0*a*c; if(abs(d)0) printf(“nx1=%f”,(-b+sqrt(d)/(2.0*a); printf(“nx2=%f”,(-b-sqrt(d)/(2.0*a); else printf(“nx1=%f+i %f”,-b/(2.0*a),sqrt(-d)/(2.0*a); printf(“nx2=%f - i %f”,-b/(2.0*a),-sqrt(-d)/(2.0*a); 外层内 层求相等实根。求不等实根。求共扼复根。实例运行运行时,如何来输入变量的值吗?为何不写abs(d)=0?5.3 if 语句 (5) 条件运算

10、符 若if语句中,当表达式为“真”和“假”时,都只执行一个赋值语句且向同一个变量赋值时,可以用简单的条件运算符来处理。例如,若有以下if语句: if (ab) max=a; else maxb;可以用下面的条件运算符(? :)来处理: max(ab)?a:b;条件运算符要求有三个操作对象,称三目(元)运算符。 条件表达式的一般形式为: 表达式1?表达式2:表达式3 5.3 if 语句 (5) 条件运算符几点说明:条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的

11、值。 max(ab)?a:b条件运算符优先于赋值运算符,条件运算符的优先级别比关系运算符和算术运算符都低,因此 max=(ab)?a:b 括号可以不要,可写成 max=ab?a:b 如果有 ab?a:b+1 相当于ab?a:(b十1),而不相当于(ab?a:b)1。!算术运算符关系运算符&|条件运算赋值运算符5.3 if 语句 (5) 条件运算符条件运算符的结合方向为“自右至左”。 例: ab?a:cd?c:d ab?a:(cd?c:d) 如 a=1,b=2,c=3,d4结果?条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同. 如: x?a:b x是整型变量 表达式2和表达式3的

12、类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。如xy?1:1.5 1转换成实型值10。5.3 if 语句 (5) 条件运算符例: 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。实例运行main() char ch; scanf(%c,&ch); ch=(ch=A & ch=Z)?(ch+32):ch; printf(%c,ch);5.4 switch 语句(重点)switch语句(多分支结构)格式:switch (expression) case 常量表达式1: statement 1; case 常量表达式2: stat

13、ement 2; case 常量表达式n-1: statement n-1; default : statement n; 流程:1)、先求expression的值。2)、依次比较expression和各常量表达式的值。 3)、如果和第i个常量表达式相等,则执行第i条以后的语句。 4)、如果不相等,则执行default以后的语句。 5)、各个case和default的出现次序可以任意.default也可以不要5.4 switch 语句语句标号的概念:#include void main(void) char grade; grade=getchar( ); switch(grade) case

14、 A: printf (“90100n”); case B: printf (“8089n); case C: printf (“7079n”); case D: printf (“60 69n”); case E: printf (“60n”); default : printf (“errorn”); 语句标号。break语句:格式: break; 作用:中断switch流程。 break; break; break; break;break;5.4 switch 语句例:输出五分制对应的百分制范围。#include /* q8.c */void main(void) char chGra

15、d; chGrad=getchar( ); switch(chGrad) case a: case A: printf(“90100n”); break; case b: case B: printf(“8089n”); break; case c: case C: printf(“7079n”); break; case d: case D: printf(“6069n”); break; case e: case E: printf(“实例运行2”*/ default : printf(“Data Error!n”); 多个标号可以共用相同的语句。default语句可以省略。实例运行15.

16、4 switch 语句#include main() int v1=0,v2=0; char ch; while(ch=getchar()!=#) switch(ch) case a: case A: case e: case E: case o: case O: case i: case I: case u: case U:v2+; default: v1+; printf(v1=%d,v2=%d,v1,v2); 输入: asdOyptUe#结果:v1=9(总个数) ,v2=4(元音个数)5.4 switch 语句#include main() int v1=0,v2=0; char ch;

17、 while(ch=getchar()!=#) switch(ch) case a: case A: default: v1+; case e: case E: case o: case O: case i: case I: case u: case U: v2+; printf(v1=%d,v2=%d,v1,v2); 输入:asdOyptUe# 结果: v1=6(非元音个数除a和A) ,v2=9(总个数)5.4 switch 语句#include main() int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0: a+;break; case 1: b+;break; case 2: a+;b+; break; case 3: a+;b+; printf(a=%d,b=%d,a,b); 运行结果? break语句没有,结果?运行结果为:a=2,b=1分支结构小结if构成

温馨提示

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

评论

0/150

提交评论