c语言选择结构讲解

上传人:工**** 文档编号:569432891 上传时间:2024-07-29 格式:PPT 页数:42 大小:274KB
返回 下载 相关 举报
c语言选择结构讲解_第1页
第1页 / 共42页
c语言选择结构讲解_第2页
第2页 / 共42页
c语言选择结构讲解_第3页
第3页 / 共42页
c语言选择结构讲解_第4页
第4页 / 共42页
c语言选择结构讲解_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《c语言选择结构讲解》由会员分享,可在线阅读,更多相关《c语言选择结构讲解(42页珍藏版)》请在金锄头文库上搜索。

1、选择结构程序设计选择结构程序设计1一、一、 什么叫什么叫“选择选择”二、二、 在在C中选择结构的表现形式中选择结构的表现形式三、三、 “关系运算关系运算”与与“逻辑运算逻辑运算”四、四、 选择结构的使用实例选择结构的使用实例五、五、 总结、疑问、常见错误总结、疑问、常见错误主要内容主要内容2从小学时代:从小学时代:语文课的造句练习:语文课的造句练习: 如果如果就就英语学习中单词英语学习中单词: if then 一、一、什么叫什么叫“选择选择”3生活中的生活中的“选择选择”体育课排队中位置的选择体育课排队中位置的选择 第一次排队第一次排队 来了新人的排队来了新人的排队大学的选择:大学的选择: 高

2、考分数、学校知名度、兴趣、就业前景、高考分数、学校知名度、兴趣、就业前景、 风险:招生数量、竞争人数、风险:招生数量、竞争人数、4生活中的生活中的“选择选择”道路上的选择道路上的选择 道口分类:三岔口、十字路口、五道口、道口分类:三岔口、十字路口、五道口、N道口道口 选择的依据?目的地、道路、畅通性选择的依据?目的地、道路、畅通性5讲座讲座 选择结构程序设计选择结构程序设计生活中的生活中的“选择选择”领导要求:领导要求:明天上午明天上午10点钟到北京清华点钟到北京清华大学参加会议,后天回校参加选举大学参加会议,后天回校参加选举会。你怎么办?会。你怎么办?交通工具的选择交通工具的选择:飞机、火车

3、、汽车飞机、火车、汽车6讲座讲座 选择结构程序设计选择结构程序设计总结:总结: 依据某些条件实现依据某些条件实现(达到达到)某个目标的情况某个目标的情况处理称为选择。处理称为选择。 因此首先必须知道因此首先必须知道“条件条件”,然后是使用,然后是使用适当的处理方式。适当的处理方式。 选择的必要条件:选择的必要条件:“条件条件”7讲座讲座 选择结构程序设计选择结构程序设计在在C C中选择结构的表现形式,一般称为中选择结构的表现形式,一般称为 if if 语句语句 switch switch 语句语句可以从不同的角度去观察分析这两个语句。可以从不同的角度去观察分析这两个语句。二、二、在在C中中“选

4、择结构选择结构”的表现形式的表现形式8讲座讲座 选择结构程序设计选择结构程序设计1 1 从词义看:从词义看: if if 语句语句 switch switch 语句语句9选择结构选择结构单分支单分支双分支双分支if (表达式表达式) 语句语句多分支多分支if (表达式表达式) 语句语句else 语句语句if (表达式表达式1) 语句语句else if (表达式表达式) 语句语句else 语句语句nif 语句的嵌套语句的嵌套switch 语句语句讲座讲座 选择结构程序设计选择结构程序设计2 从分支看分为三种分支从分支看分为三种分支10if (表达式表达式) 语句语句switch (表达式表达式)

5、 case : . 讲座讲座 选择结构程序设计选择结构程序设计3 从一般形式的角度分两种从一般形式的角度分两种基本结构基本结构 : 选择标识符选择标识符 (表达式表达式) 语句语句你注意到与前面第一部分的介绍有什么不同吗?你注意到与前面第一部分的介绍有什么不同吗? (表达式表达式) 11讲座讲座 选择结构程序设计选择结构程序设计关于表达式的定义关于表达式的定义表达式由运算符、常量及变量构成。表达式由运算符、常量及变量构成。 C C语言的表达式基本遵循一般代数规则。语言的表达式基本遵循一般代数规则。 虽然进一步细分,又分为算术表达式、关系表达虽然进一步细分,又分为算术表达式、关系表达式、赋值表达

6、式,式、赋值表达式, 有几点却是与有几点却是与C C语言紧密相关的需要注意。语言紧密相关的需要注意。 1. 1. 类型转换类型转换 2. 2. 复合运算的使用复合运算的使用 12讲座讲座 选择结构程序设计选择结构程序设计 根据给定的条件判断决定要执根据给定的条件判断决定要执行的操作。行的操作。语句格式语句格式: :if (if (表达式表达式) ) 语句语句;例例: if (ab) x=a;: if (ab) x=a; 语句语句零零条件条件非零非零 if 语句的使用。语句的使用。13举例举例讲座讲座 选择结构程序设计选择结构程序设计#include void main()float a,b,t

7、=0; scanf(“%f,%f”,&a,&b); if (ab) t=a; a=b; b=t; printf(“%5.2f,%5.2fn”,a,b);3,4 if (ab) t=a; a=b; b=t;当某些语句作为一个整体出当某些语句作为一个整体出现的时候,必须是复合语句现的时候,必须是复合语句的形式。的形式。14讲座讲座 选择结构程序设计选择结构程序设计if 语句中对于表达式的要求语句中对于表达式的要求 1. 1. 对表达式的类型没有任何要求对表达式的类型没有任何要求 2. 2. 使用的是表达式的结果值使用的是表达式的结果值 3. 3. 这个结果值若非这个结果值若非0,0,则都作为则都作

8、为“真真”处理。处理。 4. 4. 针对上一条,对针对上一条,对floatfloat类型的结果要格外注意。类型的结果要格外注意。 15讲座讲座 选择结构程序设计选择结构程序设计 switch 语句的使用。语句的使用。格式:格式:switch(switch(表达式)表达式) case case 常量表达式:语句序列常量表达式:语句序列; ; case case 常量表达式:语句序列常量表达式:语句序列; ; case case 常量表达式常量表达式n n: 语句序列语句序列n;n; default default :语句序列:语句序列n+1;n+1; 16讲座讲座 选择结构程序设计选择结构程序设

9、计switch 语句中注意的问题语句中注意的问题 1. 1. 规则上对表达式的类型没有任何要求规则上对表达式的类型没有任何要求, ,但实际但实际使用中一般采用结果为整形或字符型的表达式,或使用中一般采用结果为整形或字符型的表达式,或者是与常量表达式类型一致的表达式者是与常量表达式类型一致的表达式. . 2. 2. 使用的是表达式的结果值与常量表达式使用的是表达式的结果值与常量表达式“等于等于”的比较结果。的比较结果。 3. 3. 要注意要注意casecase的执行顺序的影响。的执行顺序的影响。17讲座讲座 选择结构程序设计选择结构程序设计在班级排队中排队的依据是在班级排队中排队的依据是“相互之

10、间身相互之间身高高”的差异;的差异;在三角形构成判定定理中要求在三角形构成判定定理中要求“任意两边任意两边之和大于第三边之和大于第三边”;因此两个对象因此两个对象( (量量) )之间不仅可以实施算术之间不仅可以实施算术运算,还存在一定的运算,还存在一定的“关系关系”。小学时就知道小学时就知道:ab:ab是否成立要看具体值。是否成立要看具体值。在在C C语言中称之为关系运算。语言中称之为关系运算。三、三、“关系运算关系运算”与与“逻辑运算逻辑运算”18运算定义、运算符号、运算对象运算定义、运算符号、运算对象讲座讲座 选择结构程序设计选择结构程序设计这些运算相互之间的优先级这些运算相互之间的优先级

11、与其它运算组合时的优先级与其它运算组合时的优先级运算结果值、如何使用这个结果运算结果值、如何使用这个结果关心什么?关心什么?19关系运算符关系运算符 = = != (6种种)讲座讲座 选择结构程序设计选择结构程序设计优先级优先级赋值赋值 关系关系( 后后2前前4 ) cd=ab+c153 ?d=ab+c?关系运算符和关系表达式关系运算符和关系表达式20讲座讲座 选择结构程序设计选择结构程序设计关系运算是表述对象之间的关系是否成立,关系运算是表述对象之间的关系是否成立,在给出具体值必然有一个确定的、唯一的结果:在给出具体值必然有一个确定的、唯一的结果:要么成立、要么不成立。要么成立、要么不成立。

12、上升到理论高度,将这了结果称为逻辑值:上升到理论高度,将这了结果称为逻辑值:“真真”、“假假”。看一下造句题:看一下造句题:如果如果a a来了来了并且并且b b也来了,也来了,才才能打开门。能打开门。如果如果a a来了来了或者或者b b也来了,也来了,都都能打开门。能打开门。以上两个问题引入了一个新的运算:以上两个问题引入了一个新的运算:逻辑逻辑运算运算。21逻辑运算符逻辑运算符 !(逻辑非)(逻辑非) &(逻辑与)(逻辑与) |(逻辑或)(逻辑或)运算规则运算规则优先次序优先次序赋值赋值 | & 关系关系算术算术 3) | b 0逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式22讲座讲座 选择

13、结构程序设计选择结构程序设计举例举例53 & 8 3) & (8 3 | 21逻辑运算符两侧的运算对象不但可逻辑运算符两侧的运算对象不但可以是和,也可以是或非的以是和,也可以是或非的整数,也可是任何类型的数据。系整数,也可是任何类型的数据。系统判定标准:为假;非为真。统判定标准:为假;非为真。23讲座讲座 选择结构程序设计选择结构程序设计解决实际问题的步骤解决实际问题的步骤 1. 1. 分析已知条件、解决分步分析已知条件、解决分步 2. 2. 根据问题决定使用什么结构、语句根据问题决定使用什么结构、语句 3. 3. 编写源程序编写源程序( (代码代码) ) 4. 4. 调试调试: :排出语法错

14、误,用已知初始数排出语法错误,用已知初始数据和结果排出语义错误。据和结果排出语义错误。 5. 5. 实际使用:用真实数据运行程序。实际使用:用真实数据运行程序。四、选择结构的应用实例四、选择结构的应用实例24思考思考按照从小到大的顺序输出数据按照从小到大的顺序输出数据讲座讲座 选择结构程序设计选择结构程序设计#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); 针对要求选择单分针对要求选择单分支结构即可。支结构即可。单分支单分支要求要求

15、编成编成采用固定输出模式是,已经符合如采用固定输出模式是,已经符合如何处理,不符合时如何处理。何处理,不符合时如何处理。25要求要求讲座讲座 选择结构程序设计选择结构程序设计#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 printf(“Not a triangle!n”);如何判断是三角形的三边?如何求三角形的面积。如何判断是三

16、角形的三边?如何求三角形的面积。输入输入a,b,c是三角形吗是三角形吗?p (a+b+c)/2ssqrt(p*(p-a)*(p-b)*(p-c)输出输出s输出输出“非非三角形!三角形!”3,4,5 3,4,8 Not a triangle!双分支双分支分析分析输入三角形的三边,求三角形的面积。输入三角形的三边,求三角形的面积。26格式格式举例举例讲座讲座 选择结构程序设计选择结构程序设计if (cost3000) cash=500;else if (cost2000) cash=300; else if (cost1500) cash=200;else if (cost1000) cash=1

17、00;else cash=0;if (表达式表达式1) 语句语句else if (表达式表达式) 语句语句else 语句语句n语句本身含语句本身含分号分号多分支(一)多分支(一)27if语句的嵌套语句的嵌套讲座讲座 选择结构程序设计选择结构程序设计在在ifif语句中又包含一个或多个语句中又包含一个或多个ifif语句。语句。被嵌套的条件语句和嵌套进被嵌套的条件语句和嵌套进去的条件语句既可是单分支,去的条件语句既可是单分支,也可是双分支。也可是双分支。if (表达式表达式)if (表达式表达式) 语句语句else 语句语句else if (表达式表达式3) 语句语句3else 语句语句4注意注意i

18、fif与与elseelse的配对原则:的配对原则:elseelse总是与它上面的最近的未配对的总是与它上面的最近的未配对的ifif配对。配对。分析分析方法方法1 1、主句是单分支还是双分支的。、主句是单分支还是双分支的。2 2、嵌套进来的子句是双分支还是单分支的,嵌、嵌套进来的子句是双分支还是单分支的,嵌套在套在ifif后面还是后面还是elseelse后面。后面。多分支(二)多分支(二)28开关语句开关语句 讲座讲座 选择结构程序设计选择结构程序设计switch (表达式表达式) case 常量表达式常量表达式1:语句:语句1 case 常量表达式常量表达式2:语句:语句2 case 常量表达

19、式常量表达式3:语句:语句3 case 常量表达式常量表达式n:语句:语句n default: 语句语句n+1当分支较多时,使用嵌套的当分支较多时,使用嵌套的ifif语句层数多,程序冗长而且可读性语句层数多,程序冗长而且可读性降低。此时可以考虑使用降低。此时可以考虑使用switchswitch语句(开关语句)来处理多分支。语句(开关语句)来处理多分支。多分支(三)多分支(三)29举例举例#include void main() char grade; printf(“请输入考试等级请输入考试等级AD:”); scanf(“%c”,&grade) ; switch (grade) case A:

20、 printf(“80100n”); case B: printf(“7079n”); case C: printf(“6069n”); case D: printf(“60n”); default: printf(“errorn”); B 7079606960Error根据输入的考试成绩等级打印出百分制分数段。根据输入的考试成绩等级打印出百分制分数段。A: 80100 B: 7079 C: 6069 D: 60说明:应在每一个说明:应在每一个printf后加后加break语句语句讲座讲座 选择结构程序设计选择结构程序设计30完善后完善后#include void main() char gr

21、ade; printf(“请输入考试等级请输入考试等级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可以省略。可以省略。讲座讲座 选择结构程序设计选择结构程序设计31问题问题#include void main() int

22、 score; printf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%c”,&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”); 根据输入的考试成绩(百分制整数)打印出等级水平。根据输入的考试成绩(百分制整数)打印出等级水平。(使用(使用switch语

23、句实现)语句实现)A: 80100 B: 7079 C: 6069 D: 60思考:本程序思考:本程序有问题么?有问题么?理想中理想中讲座讲座 选择结构程序设计选择结构程序设计思考思考使用什么结构来解决问题?使用什么结构来解决问题?32#include void main() int score, p; printf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%c”,&score); p=score/10; switch (p) case 0: printf(“Dn”);break; case 1: printf(“Dn”);break; case 2: printf(“D

24、n”);break; case 3: printf(“Dn”);break; case 4: printf(“Dn”);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种情况种情况思考:不同思考:不

25、同case值时执行相同的值时执行相同的操作,是否可以操作,是否可以合并?合并?讲座讲座 选择结构程序设计选择结构程序设计33#include void main() int score, p; printf(“请输入考试成绩请输入考试成绩0100:”); scanf(“%c”,&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

26、: case 9: case 10:printf(“An”);break; default: printf(“请输入请输入0100之间的整数之间的整数n”); 改进改进程序程序2注意:多个注意:多个case共共用一组执行语句时,用一组执行语句时,共用的执行语句写共用的执行语句写在在最后一个最后一个case的后面。的后面。讲座讲座 选择结构程序设计选择结构程序设计34问题问题输入一年号输入一年号,判断这一年是否为闰年判断这一年是否为闰年.讲座讲座 选择结构程序设计选择结构程序设计真真year被被400整除整除year被被4整除整除真真假假leap=0leap=1year被被100整除整除真真le

27、ap=1leap=0Leap真真假假输出输出“闰年闰年”输出输出“非闰年非闰年”假假假假分析分析当给出数学表达式后,如何转化为程序当给出数学表达式后,如何转化为程序.参考参考N-S图是结构化程序设计中常用的方法,图是结构化程序设计中常用的方法,35参考程序参考程序讲座讲座 选择结构程序设计选择结构程序设计#include void main() int year,leap; scanf(%d,&year); if (year%4=0) if (year%100=0) if (year%400=0) leap=1; else leap=0; else leap=1; else leap=0; i

28、f(leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap yearn,year);运行情况如下:运行情况如下:输入:输入:1800输出:输出:1800 is not a leap year输入:输入:2000输出:输出:2000 is a leap year输入:输入:1996输出:输出:1996 is a leap year条件可否条件可否合并写成合并写成一行呢?一行呢?36改进程序改进程序讲座章讲座章 选择结构程序设计选择结构程序设计#include void main() int year,leap;

29、 scanf(%d,&year); if (year%4=0 & year%100!=0)|(year%400=0) leap=1; else leap=0; if(leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap yearn,year);37讲座讲座 选择结构程序设计选择结构程序设计总结总结前面所用的例子基本上都取自教材中,这里只是重新梳理分析。1.选择结构有两种基本形式,但是能组合出多种变化;选择结构有两种基本形式,但是能组合出多种变化;2. 表达式不仅有算数表达式、还有关系、逻辑、条件表达式不仅有

30、算数表达式、还有关系、逻辑、条件(?)、逗号、赋值,等等。、逗号、赋值,等等。3. 表达式的使用要特别注意优先级的影响。表达式的使用要特别注意优先级的影响。4. 在在VC中中“逻辑与逻辑与”的表达式当求解到的表达式当求解到“假假”时,后时,后面的不再计算。面的不再计算。38讲座讲座 选择结构程序设计选择结构程序设计问题?问题?1. 能看懂程序,但是自己对立写不出来;能看懂程序,但是自己对立写不出来;2. 模仿是学习的必要阶段,但只是初级阶段。模仿是学习的必要阶段,但只是初级阶段。3. 只有亲自动手才能熟悉;经验需要自己总结。只有亲自动手才能熟悉;经验需要自己总结。2.如何设计程序的结构?如何设

31、计程序的结构?3. 如果让你做一道菜,你怎么完成如果让你做一道菜,你怎么完成?4. 再复杂的机械,也是由简单部分构成的,能把所有完成再复杂的机械,也是由简单部分构成的,能把所有完成的任务分解成一步一步的,你就会写程序了。的任务分解成一步一步的,你就会写程序了。5. 如何验证程序的正确与否?如何验证程序的正确与否? 你会验证一个公式的正确性,就会验证程序的正确性,原你会验证一个公式的正确性,就会验证程序的正确性,原理一样、方法多种。理一样、方法多种。39讲座讲座 选择结构程序设计选择结构程序设计4. 复杂的表达式如何简单化?复杂的表达式如何简单化? 加入圆括号,明显地表示出结构关系;加入圆括号,

32、明显地表示出结构关系; 充分利用优先级的影响。充分利用优先级的影响。5. 如何快速的排除错误?如何快速的排除错误? 先排除头三个错误;鼠标点击提示后,光标到错误所在的先排除头三个错误;鼠标点击提示后,光标到错误所在的行,行,90%的错误在本行。的错误在本行。 6. 语法错误与语义错误是两个概念语法错误与语义错误是两个概念 要求计算要求计算a+b,程序中写成,程序中写成a-b,计算机不会知道这个错误。,计算机不会知道这个错误。40讲座讲座 选择结构程序设计选择结构程序设计常见错误常见错误 记住:记住:有错不可怕,只怕不知道。有错不可怕,只怕不知道。1.“=”与与“=”的区别?的区别?2. 在在C

33、语言中,语言中,“=”是关系运算符,易犯得错误是是关系运算符,易犯得错误是3. if (a=b) then c=a;2. 没有使用复合语句?没有使用复合语句?1. 记住一点:凡是需要两条或多条语句完成的工作一定用记住一点:凡是需要两条或多条语句完成的工作一定用花括号花括号表示出来;表示出来;2.3. 嵌套关系错误嵌套关系错误3. 如果你能用如果你能用N-S图画出流程,就不会犯这类错误。图画出流程,就不会犯这类错误。 4. 建议采用缩进格式建议采用缩进格式(VC中基本自动缩进了中基本自动缩进了)写程序;写程序;5.4. 缺少缺少break语句语句6. 对对case的执行流程没有记住导致的。的执行流程没有记住导致的。41讲座讲座 选择结构程序设计选择结构程序设计谢谢谢谢42

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号