C语言第5章-选择结构ppt课件_第1页
C语言第5章-选择结构ppt课件_第2页
C语言第5章-选择结构ppt课件_第3页
C语言第5章-选择结构ppt课件_第4页
C语言第5章-选择结构ppt课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、1第十讲2第五章第五章选择结构程序设计选择结构程序设计3一、关系运算符和关系表达式一、关系运算符和关系表达式二、逻辑运算符和逻辑表达式二、逻辑运算符和逻辑表达式三、实现选择结构的控制语句三、实现选择结构的控制语句四、选择结构程序举例四、选择结构程序举例主要内容主要内容4关系运算符关系运算符 = = != (6种种)优先级优先级赋值赋值 关系关系( 后后2前前4 ) b一、关系运算符和关系表达式一、关系运算符和关系表达式5已知已知: (a=3 b=2 c=1 d=0)0a=bcd=ab+c1d=ab+c?ab=cca+bf=abc6逻辑运算符逻辑运算符 !(逻辑非)(逻辑非) &(逻辑与

2、)(逻辑与) |(逻辑或)(逻辑或)运算规则运算规则优先次序优先次序赋值赋值 | & 关系关系算术算术 3) | b 0c&d1逻辑运算符两侧的运算对象不但可以是和,逻辑运算符两侧的运算对象不但可以是和,也可以是或非的整数,也可是任何类型的数也可以是或非的整数,也可是任何类型的数据。系统判定标准:为假;非为真。据。系统判定标准:为假;非为真。853 & 8 3) & (8 3 | 219n#include stdio.hnvoid main()nn int a=1,b=2,c=3,d=4,m=10,n=10;n (m=ab)&(n=cd);n print

3、f(%d %d,m,n); n0 1010n练习5.311(一)、选择结构的三种分支(一)、选择结构的三种分支(二)、单分支(二)、单分支(三)、双分支(三)、双分支(四)、多分支(四)、多分支三、实现选择结构的控制语句三、实现选择结构的控制语句12选择结构选择结构单分支单分支双分支双分支if (表达式表达式) 语句语句多分支多分支if (表达式表达式) 语句语句else 语句语句if (表达式表达式1) 语句语句else if (表达式表达式) 语句语句else 语句语句nif 语句的嵌套语句的嵌套switch语句语句(一)、选择结构的三种分支(一)、选择结构的三种分支13格式格式if (x

4、y) printf(“%d”,x);if (表达式表达式) 语句语句(二)、单分支(二)、单分支14#include void main()float a,b,t=0; scanf(%f,%f,&a,&b); if (ab) t=a; a=b; b=t; printf(%5.2f,%5.2fn,a,b);4,3 3.00, 4.00 当某些语句作为一个整体当某些语句作为一个整体出现的时候,必须是复合出现的时候,必须是复合语句的形式。语句的形式。15格式格式if (表达式表达式) 语句;语句;else 语句;语句;(三)、双分支(三)、双分支16nmain()nn int a,

5、b;n printf(input two numbers: );n scanf(%d%d,&a,&b);n if(ab)n printf(max=%dn,a);n elsen printf(max=%dn,b);n17#include #include void main() float a,b,c,p,s; scanf(%f,%f,%f,&a,&b,&c); if (a+bc & a+cb & b+ca) p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(s=%7.2fn,s); else

6、printf(Not a triangle!n);例:输入三角形的三边,求三角形的面积。例:输入三角形的三边,求三角形的面积。输入输入a,b,c是三角形吗?是三角形吗?p (a+b+c)/2ssqrt(p*(p-a)*(p-b)*(p-c)输出输出s输出输出“非非三角形!三角形!”3,4,5 3,4,8 18条件运算符组条件运算符组成条件表达式成条件表达式的一般形式的一般形式表达式表达式?表达式表达式:表达式表达式条件运算符条件运算符若若if语句中,在表达式为语句中,在表达式为“真真”和和“假假”时,时,都只执行一个赋值语句给同一个变都只执行一个赋值语句给同一个变量赋值量赋值,则可以用简单的条

7、件运算符来,则可以用简单的条件运算符来处理。处理。取值取值表达式表达式1为真,则取值为表达式为真,则取值为表达式2的值;的值;表达式表达式1为假,则取值为表达式为假,则取值为表达式3的值。的值。19举例举例if (ab) max=a;else max=b;max= (ab)? a : b;20使用条件表达式时的几点说明:使用条件表达式时的几点说明:n条件运算符的运算优先级条件运算符的运算优先级低于低于关系运算符和算关系运算符和算术运算符,但术运算符,但高于高于赋值符。赋值符。 max=(ab)?a:b 可以写为可以写为 max=ab?a:bn条件运算符条件运算符?和:是一对运算符,和:是一对运

8、算符,不能不能分开分开单独单独使用使用。n条件运算符为条件运算符为右结合右结合。 ab?a:cd?c:d 应理解为应理解为 ab?a:(cd?c:d)21n表达式2 和表达式3 不仅可以数值表达式,还可以是赋值表达式或函数表达式。nab?(a=100): (b=100);nab?printf(%d,b):printf(%d,a);22nx? a: b;nxy? 1:1.5;1 1.0类型可不同23条件表达式实现输出两个数中的大数。条件表达式实现输出两个数中的大数。 void main() int a,b,max; printf(n input two numbers: ); scanf(%d,

9、%d,&a,&b); printf( max=%d,ab?a:b);24例:例: 输入一个字符,判断它是否是大写字母,输入一个字符,判断它是否是大写字母,若是,将它转换为小写字母。若不是,则不转换。若是,将它转换为小写字母。若不是,则不转换。#include stdio.hvoid main() char ch; scanf(%c,&ch); ch=(ch=A&ch3000) cash=500;else if (cost2000) cash=300; else if (cost1500) cash=200;else if (cost1000) cash=100;

10、else cash=0;printf(%d,cash); 30 #include stdio.hvoid main() char c; printf(please input a character:); c=getchar(); if(c=0&c=A&c=a&cb) a+; b+; else a=0; b=10; 例如例如33输入三个数输入三个数abc,要求按由小到大的顺序输出要求按由小到大的顺序输出。n算法: if ab,将a,b对换。 if ac,将a,c对换。 if bc,将b,c对换。 请同学们写出程序。思考:如果要输入四个数abcd呢? 34if语句的嵌套语

11、句的嵌套在在ifif语句中又包含一个或多个语句中又包含一个或多个ifif语句。语句。被嵌套的条件语句和嵌套进被嵌套的条件语句和嵌套进去的条件语句既可是单分支,去的条件语句既可是单分支,也可是双分支。也可是双分支。if (表达式表达式)if (表达式表达式) 语句语句else 语句语句else if (表达式表达式3) 语句语句3else 语句语句4注意注意if与与else的配对原则:的配对原则:else总是与它上面的最近的未配对的总是与它上面的最近的未配对的if配对。配对。(四)、多分支(二)(四)、多分支(二)35已知已知a=3 b=4 c=5 d=0, d=?if (ab)d=a;else

12、 if (cb) d=c; else d=b;if (ab)if (cb) d=c; else d=b ;if (ab)if (cb) d=c;else d=b ;if (ab) if (cb) d=c; else d=b;else d=a;d=5d=3d=0d=436说明:说明:n采用嵌套结构实质上是为了进行多分支选择,采用嵌套结构实质上是为了进行多分支选择,当问题采用当问题采用if-else-if语句也可以实现时,一般语句也可以实现时,一般应避免采用嵌套结构。以使程序更加清晰,便应避免采用嵌套结构。以使程序更加清晰,便于阅读理解。于阅读理解。main() int a,b; printf(p

13、lease input A,B: ); scanf(%d,%d,&a,&b); if (a!=b) if (ab) printf(ABn); else printf(Ab) printf(ABn); else printf(ABn);37n函数n -1 (x0)n编写程序,输入x值,输出 Y值。38n#include stdio.hnvoid main()nn int x,y;n scanf(%d,&x);n n 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

14、=0; if (x=0) if (x0) y=1;else y=-1;错误错误39n习题 5.540switch (表达式表达式) case 常量表达式常量表达式1:语句:语句1 case 常量表达式常量表达式2:语句:语句2 case 常量表达式常量表达式3:语句:语句3 case 常量表达式常量表达式n:语句:语句n default: 语句语句n+1当当分支较多分支较多时,使用嵌套的时,使用嵌套的if语句层数多,程序冗长而且可读性降低。语句层数多,程序冗长而且可读性降低。此时可以考虑使用此时可以考虑使用switch语句(开关语句)来处理语句(开关语句)来处理多分支多分支。(四)、多分支(三

15、)(四)、多分支(三) _switch语句语句41说明:说明:n计算表达式的值。计算表达式的值。 并与其后的常量表达并与其后的常量表达式值逐个相比较,当表达式的值与某个式值逐个相比较,当表达式的值与某个常量表达式的值相等时,常量表达式的值相等时, 则执行其后的则执行其后的语句,然后跳出语句,然后跳出case块,继续执行块,继续执行所有所有case后的语句。后的语句。n如表达式的值与所有如表达式的值与所有case后的常量表达后的常量表达式式均不相同均不相同时,则时,则执行执行default后的语句。后的语句。42#include void main() char grade; printf(请输

16、入考试等级请输入考试等级AD:); scanf(%c,&grade) ; switch (grade) case A: printf(80100n); case B: printf(7079n); case C: printf(6069n); case D: printf(60n); default: printf(errorn); B 7079606960Error1、根据输入的考试成绩等级打印出百分制分数段。、根据输入的考试成绩等级打印出百分制分数段。A: 80100 B: 7079 C: 6069 D: 6043#include void main() char grade; p

17、rintf(请输入考试等级请输入考试等级AD:); scanf(%c,&grade) ; switch (grade) case A: printf(80100n); break; case B: printf(7079n); break; case C: printf(6069n); break; case D: printf(60n); break; default: printf(errorn); B 7079最后一行的最后一行的break可以省略。可以省略。44#include void main() int score; printf(请输入考试成绩请输入考试成绩0100:)

18、; scanf(%d,&score); if(score100) printf(请输入请输入0100之间的整数之间的整数n); else if(score=80) printf(An); else if(score=70) printf(Bn); else if(score=60) printf(Cn); else printf(Dn);2、根据输入的考试成绩(百分制整数)打印出等级水平。、根据输入的考试成绩(百分制整数)打印出等级水平。(使用(使用ifelse语句实现)语句实现)A: 80100 B: 7079 C: 6069 D: 6045#include void main()

19、int score; printf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%d”,&score); switch (score) case 80100: printf(“An”);break; case 7079: printf(“Bn”);break; case 6069: printf(“Cn”);break; case 60: printf(“Dn”);break; default: printf(“请输入请输入0100之间的整数之间的整数n”); 根据输入的考试成绩(百分制整数)打印出等级水平。(使用根据输入的考试成绩(百分制整数)打印出等级水平。(使用

20、switch语句实现)语句实现)A: 80100 B: 7079 C: 6069 D: 60思考:本程序思考:本程序有问题么?有问题么?46#include void main() int score, p; printf(请输入考试成绩请输入考试成绩0100:); scanf(%d,&score); p=score/10; switch (p) case 0: printf(Dn);break; case 1: printf(Dn);break; case 2: printf(Dn); break; case 3: printf(Dn);break; case 4: printf(D

21、n);break; case 5: printf(Dn);break; case 6: printf(Cn);break; case 7:printf(Bn);break; case 8:printf(An);break; case 9:printf(An);break; case 10:printf(An);break; default: printf(请重新输入请重新输入0100之间的整数之间的整数n); 改进改进程序程序111种情况种情况思考:不同思考:不同case值时执行相同的值时执行相同的操作,是否可以操作,是否可以合并?合并?47#include void main() int s

22、core, p; printf(请输入考试成绩请输入考试成绩0100:); scanf(%d,&score); p=score/10; switch (p) case 0: case 1: case 2: case 3: case 4: case 5: printf(Dn);break; case 6: printf(Cn);break; case 7:printf(Bn);break; case 8: case 9: case 10:printf(An);break; default: printf(请输入请输入0100之间的整数之间的整数n); 改进改进程序程序2注意:多个注意:多

23、个case共共用一组执行语句时,用一组执行语句时,共用的执行语句写共用的执行语句写在在最后一个最后一个case的的后面。后面。48在使用在使用switch语句时还应注意以下几点:语句时还应注意以下几点:在在case后的各常量表达式的值不能相同,否则会出后的各常量表达式的值不能相同,否则会出现错误。现错误。在在case后,允许有多个语句,可以不用后,允许有多个语句,可以不用括起来。括起来。各各case和和default子句的先后顺序可以变动,而不会子句的先后顺序可以变动,而不会影响程序执行结果。影响程序执行结果。default子句可以省略不用。子句可以省略不用。49n习题5。850第十二讲51例

24、例1输入一年号输入一年号,判断这一年是否为闰年判断这一年是否为闰年.真真year被被400整除整除year被被4整除整除真真假假leap=0leap=1year被被100整除整除真真leap=1leap=0Leap真真假假输出输出“闰年闰年”输出输出“非闰年非闰年”假假假假四、选择结构程序设计举例四、选择结构程序设计举例闰年条件:闰年条件: 能被能被4整除,但不能被整除,但不能被100整除整除 能被能被400整除整除或或此处,此处,Leap表示闰年的信息表示闰年的信息52#include void main() int year,leap; scanf(%d,&year); if (y

25、ear%4=0) if (year%100=0) if (year%400=0) leap=1; else leap=0; else leap=1; else leap=0; if(leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap yearn);运行情况如下:运行情况如下:输入:输入:1800输出:输出:1800 is not a leap year输入:输入:2000输出:输出:2000 is a leap year输入:输入:1996输出:输出:1996 is a leap year53#include void main() int year,leap; scanf(%d,&year); if (year%4=0 & year%100!=0)|(year%400=0) leap=1; else leap=0; if(leap) printf(%d is

温馨提示

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

评论

0/150

提交评论