c语言选择结构讲解_第1页
c语言选择结构讲解_第2页
c语言选择结构讲解_第3页
c语言选择结构讲解_第4页
c语言选择结构讲解_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、c语言选择结构讲解第一页,共42页。一、 什么叫“选择”二、 在C中选择结构的表现形式三、 “关系运算”与“逻辑运算”四、 选择结构的使用实例五、 总结、疑问、常见错误主要内容2第二页,共42页。从小学时代:语文课的造句练习: 如果就英语学习中单词: if then 一、什么叫“选择”3第三页,共42页。生活中的“选择”体育课排队中位置的选择 第一次排队 来了新人的排队大学的选择: 高考分数、学校知名度、兴趣、就业前景、 风险:招生数量、竞争人数、4第四页,共42页。生活中的“选择”道路上的选择 道口分类:三岔口、十字路口、五道口、N道口 选择的依据?目的地、道路、畅通性5第五页,共42页。讲

2、座 选择结构程序设计生活中的“选择”领导要求:明天上午10点钟到北京清华大学参加会议,后天回校参加选举会。你怎么办?交通工具的选择:飞机、火车、汽车6第六页,共42页。讲座 选择结构程序设计总结: 依据某些条件实现(达到)某个目标的情况处理称为选择。 因此首先必须知道“条件”,然后是使用适当的处理方式。 选择的必要条件:“条件”7第七页,共42页。讲座 选择结构程序设计在C中选择结构的表现形式,一般称为 if 语句 switch 语句可以从不同的角度去观察分析这两个语句。二、在C中“选择结构”的表现形式8第八页,共42页。讲座 选择结构程序设计1 从词义看: if 语句 switch 语句9第

3、九页,共42页。选择结构单分支双分支if (表达式) 语句多分支if (表达式) 语句else 语句if (表达式1) 语句else if (表达式) 语句else 语句nif 语句的嵌套switch 语句讲座 选择结构程序设计2 从分支看分为三种分支10第十页,共42页。if (表达式) 语句switch (表达式) case : . 讲座 选择结构程序设计3 从一般形式的角度分两种基本结构 : 选择标识符 (表达式) 语句你注意到与前面第一部分的介绍有什么不同吗? (表达式) 11第十一页,共42页。讲座 选择结构程序设计关于表达式的定义表达式由运算符、常量及变量构成。 C语言的表达式基本

4、遵循一般代数规则。 虽然进一步细分,又分为算术表达式、关系表达式、赋值表达式, 有几点却是与C语言紧密相关的需要注意。 1. 类型转换 2. 复合运算的使用 12第十二页,共42页。讲座 选择结构程序设计 根据给定的条件判断决定要执行的操作。单选择语句格式:if (表达式) 语句;例: if (ab) x=a; 语句零条件非零 if 语句的使用。13第十三页,共42页。举例讲座 选择结构程序设计#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”

5、,a,b);3,4 if (ab) t=a; a=b; b=t;3.00, 4.00当某些语句作为一个整体出现的时候,必须是复合语句的形式。14第十四页,共42页。讲座 选择结构程序设计if 语句中对于表达式的要求 1. 对表达式的类型没有任何要求 2. 使用的是表达式的结果值 3. 这个结果值若非0,则都作为“真”处理。 4. 针对上一条,对float类型的结果要格外注意。 15第十五页,共42页。讲座 选择结构程序设计 switch 语句的使用。格式:switch(表达式) case 常量表达式:语句序列; case 常量表达式:语句序列; case 常量表达式n: 语句序列n; defa

6、ult :语句序列n+1; 16第十六页,共42页。讲座 选择结构程序设计switch 语句中注意的问题 1. 规则上对表达式的类型没有任何要求,但实际使用中一般采用结果为整形或字符型的表达式,或者是与常量表达式类型一致的表达式. 2. 使用的是表达式的结果值与常量表达式“等于”的比较结果。 3. 要注意case的执行顺序的影响。17第十七页,共42页。讲座 选择结构程序设计在班级排队中排队的依据是“相互之间身高”的差异;在三角形构成判定定理中要求“任意两边之和大于第三边”;因此两个对象(量)之间不仅可以实施算术运算,还存在一定的“关系”。小学时就知道:ab是否成立要看具体值。在C语言中称之为

7、关系运算。三、“关系运算”与“逻辑运算”18第十八页,共42页。运算定义、运算符号、运算对象讲座 选择结构程序设计这些运算相互之间的优先级与其它运算组合时的优先级运算结果值、如何使用这个结果关心什么?19第十九页,共42页。关系运算符 = = != (6种)讲座 选择结构程序设计优先级赋值 关系( 后2前4 ) cd=ab+c153 ?d=ab+c?关系运算符和关系表达式20第二十页,共42页。讲座 选择结构程序设计关系运算是表述对象之间的关系是否成立,在给出具体值必然有一个确定的、唯一的结果:要么成立、要么不成立。上升到理论高度,将这了结果称为逻辑值:“真”、“假”。看一下造句题:如果a来了

8、并且b也来了,才能打开门。如果a来了或者b也来了,都能打开门。以上两个问题引入了一个新的运算:逻辑运算。21第二十一页,共42页。逻辑运算符 !(逻辑非) &(逻辑与) |(逻辑或)运算规则优先次序赋值 | & 关系算术 3) | b 0逻辑运算符和逻辑表达式22第二十二页,共42页。讲座 选择结构程序设计举例53 & 8 3) & (8 3 | 21逻辑运算符两侧的运算对象不但可以是和,也可以是或非的整数,也可是任何类型的数据。系统判定标准:为假;非为真。23第二十三页,共42页。讲座 选择结构程序设计解决实际问题的步骤 1. 分析已知条件、解决分步 2. 根据问题决定使用什么结构、语句 3

9、. 编写源程序(代码) 4. 调试:排出语法错误,用已知初始数据和结果排出语义错误。 5. 实际使用:用真实数据运行程序。四、选择结构的应用实例24第二十四页,共42页。思考按照从小到大的顺序输出数据讲座 选择结构程序设计#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); 针对要求选择单分支结构即可。单分支要求编成采用固定输出模式是,已经符合如何处理,不符合时如何处理。25第二十五页,共42页。要求讲座 选择结构程序设计#includ

10、e 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”);如何判断是三角形的三边?如何求三角形的面积。输入a,b,c是三角形吗?p (a+b+c)/2ssqrt(p*(p-a)*(p-b)*(p-c)输出s输出“非三角形!”3,4,5s= 6.003,4,8Not a triangle!双分支分析输入

11、三角形的三边,求三角形的面积。26第二十六页,共42页。格式举例讲座 选择结构程序设计if (cost3000) cash=500;else if (cost2000) cash=300; else if (cost1500) cash=200;else if (cost1000) cash=100;else cash=0;if (表达式1) 语句else if (表达式) 语句else 语句n语句本身含分号多分支(一)27第二十七页,共42页。if语句的嵌套讲座 选择结构程序设计在if语句中又包含一个或多个if语句。被嵌套的条件语句和嵌套进去的条件语句既可是单分支,也可是双分支。if (表达

12、式)if (表达式) 语句else 语句else if (表达式3) 语句3else 语句4注意if与else的配对原则:else总是与它上面的最近的未配对的if配对。分析方法1、主句是单分支还是双分支的。2、嵌套进来的子句是双分支还是单分支的,嵌套在if后面还是else后面。多分支(二)28第二十八页,共42页。开关语句 讲座 选择结构程序设计switch (表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式3:语句3 case 常量表达式n:语句n default: 语句n+1当分支较多时,使用嵌套的if语句层数多,程序冗长而且可读性降低。此时可

13、以考虑使用switch语句(开关语句)来处理多分支。多分支(三)29第二十九页,共42页。举例#include void main() char grade; printf(“请输入考试等级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”); B7079606960Error根据输入的考试成绩等级打印出百分制分数段

14、。A: 80100 B: 7079 C: 6069 D: 60说明:应在每一个printf后加break语句讲座 选择结构程序设计30第三十页,共42页。完善后#include void main() char grade; 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:

15、 printf(“errorn”); B7079最后一行的break可以省略。讲座 选择结构程序设计31第三十一页,共42页。问题#include void main() int 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(“请输入0

16、100之间的整数n”); 根据输入的考试成绩(百分制整数)打印出等级水平。(使用switch语句实现)A: 80100 B: 7079 C: 6069 D: 60思考:本程序有问题么?理想中讲座 选择结构程序设计思考使用什么结构来解决问题?32第三十二页,共42页。#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: p

17、rintf(“Dn”);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种情况思考:不同case值时执行相同的

18、操作,是否可以合并?讲座 选择结构程序设计33第三十三页,共42页。#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: case 9: case 10:printf(“An”);brea

19、k; default: printf(“请输入0100之间的整数n”); 改进程序2注意:多个case共用一组执行语句时,共用的执行语句写在最后一个case的后面。讲座 选择结构程序设计34第三十四页,共42页。问题输入一年号,判断这一年是否为闰年.讲座 选择结构程序设计真year被400整除year被4整除真假leap=0leap=1year被100整除真leap=1leap=0Leap真假输出“闰年”输出“非闰年”假假分析当给出数学表达式后,如何转化为程序.参考N-S图是结构化程序设计中常用的方法,35第三十五页,共42页。参考程序讲座 选择结构程序设计#include void main

20、() 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; if(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

21、 a leap year条件可否合并写成一行呢?36第三十六页,共42页。改进程序讲座章 选择结构程序设计#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 ,year); else printf(%d is not ,year); printf(a leap yearn,year);37第三十七页,共42页。讲座 选择结构程序设计总结前面所用的例子基本上都取自教材中,这里只是重新梳理分析。选择结构有两种基本形式,但是能组合出多种变化; 表达式不仅有算数表达

温馨提示

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

最新文档

评论

0/150

提交评论