收藏 分销(赏)

c语言选择结构讲解PPT参考幻灯片.ppt

上传人:精**** 文档编号:7437141 上传时间:2025-01-04 格式:PPT 页数:42 大小:608KB 下载积分:12 金币
下载 相关 举报
c语言选择结构讲解PPT参考幻灯片.ppt_第1页
第1页 / 共42页
c语言选择结构讲解PPT参考幻灯片.ppt_第2页
第2页 / 共42页


点击查看更多>>
资源描述
,*,jwz,1,选择结构程序设计,2,一、什么叫“选择”,二、在C中选择结构的表现形式,三、“关系运算”与“逻辑运算”,四、选择结构的使用实例,五、总结、疑问、常见错误,主要内容,3,从小学时代:,语文课的造句练习:,如果就,英语学习中单词:,if then,一、,什么叫“选择”,4,生活中的“选择”,体育课排队中位置的选择,第一次排队,来了新人的排队,大学的选择:,高考分数、学校知名度、兴趣、就业前景、,风险:招生数量、竞争人数、,5,生活中的“选择”,道路上的选择,道口分类:三岔口、十字路口、五道口、N道口,选择的依据?目的地、道路、畅通性,6,讲座,选择结构程序设计,生活中的“选择”,领导要求:,明天上午10点钟到北京清华大学参加会议,后天回校参加选举会。你怎么办?,交通工具的选择:飞机、火车、汽车,7,讲座,选择结构程序设计,总结:,依据某些条件实现(达到)某个目标的情况处理称为选择。,因此首先必须知道“条件”,然后是使用适当的处理方式。,选择的必要条件:,“条件”,8,讲座,选择结构程序设计,在C中选择结构的表现形式,一般称为,if 语句,switch 语句,可以从不同的角度去观察分析这两个语句。,二、,在C中“选择结构”的表现形式,9,讲座,选择结构程序设计,1 从词义看:,if 语句,switch 语句,10,选择结构,单分支,双分支,if (表达式)语句,多分支,if (表达式)语句else 语句,if (表达式1)语句,else if (表达式)语句,else,语句n,if 语句的嵌套,switch 语句,讲座,选择结构程序设计,2 从分支看分为三种分支,11,if (表达式)语句,switch,(表达式),case:.,讲座,选择结构程序设计,3 从一般形式的角度分两种,基本结构:,选择标识符,(表达式),语句,你注意到与前面第一部分的介绍有什么不同吗?,(表达式),12,讲座,选择结构程序设计,关于表达式的定义,表达式由运算符、常量及变量构成。,C语言的表达式基本遵循一般代数规则。,虽然进一步细分,又分为算术表达式、关系表达式、赋值表达式,,有几点却是与C语言紧密相关的需要注意。,1.类型转换,2.复合运算的使用,13,讲座,选择结构程序设计,根据给定的条件判断决定要执行的操作。,单选择,语句格式:,if(,表达式)语句,;,例:,if(ab)x=a;,语句,零,条件,非零,if 语句的使用。,14,举例,讲座,选择结构程序设计,#include ,void main(),float a,b,t=0;,scanf(“%f,%f”,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;,3.00,4.00,当某些语句作为一个整体出现的时候,必须是复合语句的形式。,15,讲座,选择结构程序设计,if 语句中对于表达式的要求,1.对表达式的类型没有任何要求,2.使用的是表达式的结果值,3.这个结果值若非0,则都作为,“,真,”,处理。,4.针对上一条,对float类型的结果要格外注意。,16,讲座,选择结构程序设计,switch 语句的使用。,格式:switch(表达式),case 常量表达式:语句序列;,case 常量表达式:语句序列;,case 常量表达式n:语句序列n;,default:语句序列n+1;,17,讲座,选择结构程序设计,switch 语句中注意的问题,1.规则上对表达式的类型没有任何要求,但实际使用中一般采用结果为整形或字符型的表达式,或者是与常量表达式类型一致的表达式.,2.使用的是表达式的结果值与常量表达式,“,等于,”,的比较结果。,3.要注意case的执行顺序的影响。,18,讲座,选择结构程序设计,在班级排队中排队的依据是,“,相互之间身高,”,的差异;,在三角形构成判定定理中要求,“,任意两边之和大于第三边,”,;,因此两个对象(量)之间不仅可以实施算术运算,还存在一定的,“,关系,”,。,小学时就知道:a=!=(6种),讲座,选择结构程序设计,优先级,赋值 关系(,后2前4,)c,d=ab+c,1,53?,d=ab+c?,关系运算符和关系表达式,21,讲座,选择结构程序设计,关系运算是表述对象之间的关系是否成立,在给出具体值必然有一个确定的、唯一的结果:要么成立、要么不成立。,上升到理论高度,将这了结果称为逻辑值:,“,真,”,、,“,假,”,。,看一下造句题:,如果a来了,并且,b也来了,,才,能打开门。,如果a来了,或者,b也来了,,都,能打开门。,以上两个问题引入了一个新的运算:,逻辑运算,。,22,逻辑运算符,!(逻辑非),&(逻辑与)|(逻辑或),运算规则,优先次序,赋值|&关系算术 3)|b,0,逻辑运算符和逻辑表达式,23,讲座,选择结构程序设计,举例,53&8 3)&(8 3|2,1,逻辑运算符两侧的运算对象不但可以是和,也可以是或非的整数,也可是任何类型的数据。系统判定标准:为假;非为真。,24,讲座,选择结构程序设计,解决实际问题的步骤,1.分析已知条件、解决分步,2.根据问题决定使用什么结构、语句,3.编写源程序(代码),4.调试:排出语法错误,用已知初始数据和结果排出语义错误。,5.实际使用:用真实数据运行程序。,四、选择结构的应用实例,25,思考,按照从小到大的顺序输出数据,讲座,选择结构程序设计,#include ,void main(),float a,b,t=0;,scanf(“%f%f”,if(ab),t=a;a=b;b=t;,printf(“%5.2f,%5.2fn”,a,b);,针对要求选择单分支结构即可。,单分支,要求,编成,采用固定输出模式是,已经符合如何处理,不符合时如何处理。,26,要求,讲座,选择结构程序设计,#include ,void main(),float a,b,c,p,s;,scanf(“%f,%f,%f”,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)/2,s,sqrt(p*(p-a)*(p-b)*(p-c),输出s,输出“非,三角形!”,3,4,5,s=6.00,3,4,8,Not a triangle!,双分支,分析,输入三角形的三边,求三角形的面积。,27,格式,举例,讲座,选择结构程序设计,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,语句本身含分号,多分支(一),28,if语句的嵌套,讲座,选择结构程序设计,在if语句中又包含一个或多个if语句。,被嵌套的条件语句和嵌套进去的条件语句既可是单分支,也可是双分支。,if(表达式),if(表达式)语句,else 语句,else,if(表达式3)语句3,else 语句4,注意,if与else的配对原则:,else总是与它上面的最近的未配对的if配对。,分析方法,1、主句是单分支还是双分支的。,2、嵌套进来的子句是双分支还是单分支的,嵌套在if后面还是else后面。,多分支(二),29,开关语句,讲座,选择结构程序设计,switch(表达式),case,常量表达式1,:语句1,case,常量表达式2,:语句2,case,常量表达式3,:语句3,case,常量表达式n,:语句n,default:语句n+1,当分支较多时,使用嵌套的if语句层数多,程序冗长而且可读性降低。此时可以考虑使用switch语句(开关语句)来处理多分支。,多分支(三),30,举例,#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”);,B,7079,6069,60,Error,根据输入的考试成绩等级打印出百分制分数段。,A:80100 B:7079 C:6069 D:60,说明:应在每一个printf后加break语句,讲座,选择结构程序设计,31,完善后,#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:printf(“errorn”);,B,7079,最后一行的break可以省略。,讲座,选择结构程序设计,32,问题,#include ,void main(),int score;,printf(“请输入考试成绩0100:”);,scanf(“%c”,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语句实现),A:80100 B:7079 C:6069 D:60,思考:本程序有问题么?,理想中,讲座,选择结构程序设计,思考,使用什么结构来解决问题?,33,#include ,void main(),int score,p;,printf(“请输入考试成绩0100:”);,scanf(“%c”,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(“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”);,改进程序1,11种情况,思考:不同case值时执行相同的操作,是否可以合并?,讲座,选择结构程序设计,34,#include ,void main(),int score,p;,printf(“请输入考试成绩0100:”);,scanf(“%c”,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,注意:多个case共用一组执行语句时,共用的执行语句写在,最后一个,case的后面。,讲座,选择结构程序设计,35,问题,输入一年号,判断这一年是否为闰年.,讲座,选择结构程序设计,真,year被400整除,year被4整除,真,假,leap=0,leap=1,year被100整除,真,leap=1,leap=0,Leap,真,假,输出“闰年”,输出“非闰年”,假,假,分析,当给出数学表达式后,如何转化为程序.,参考,N-S图是结构化程序设计中常用的方法,,36,参考程序,讲座,选择结构程序设计,#include,void main(),int year,leap;,scanf(%d,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 a leap year,条件可否合并写成一行呢?,37,改进程序,讲座章,选择结构程序设计,#include,void main(),int year,leap;,scanf(%d,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);,38,讲座,选择结构程序设计,总结,前面所用的例子基本上都取自教材中,这里只是重新梳理分析。,选择结构有两种基本形式,但是能组合出多种变化;,表达式不仅有算数表达式、还有关系、逻辑、条件(?)、逗号、赋值,等等。,表达式的使用要特别注意优先级的影响。,在VC中,“,逻辑与,”,的表达式当求解到,“,假,”,时,后面的不再计算。,39,讲座,选择结构程序设计,问题?,能看懂程序,但是自己对立写不出来;,模仿是学习的必要阶段,但只是初级阶段。,只有亲自动手才能熟悉;经验需要自己总结。,如何设计程序的结构?,如果让你做一道菜,你怎么完成?,再复杂的机械,也是由简单部分构成的,能把所有完成的任务分解成一步一步的,你就会写程序了。,如何验证程序的正确与否?,你会验证一个公式的正确性,就会验证程序的正确性,原理一样、方法多种。,40,讲座,选择结构程序设计,4.,复杂的表达式如何简单化?,加入圆括号,明显地表示出结构关系;,充分利用优先级的影响。,5.,如何快速的排除错误?,先排除头三个错误;鼠标点击提示后,光标到错误所在的行,90%的错误在本行。,6.语法错误与语义错误是两个概念,要求计算a+b,程序中写成a-b,计算机不会知道这个错误。,41,讲座,选择结构程序设计,常见错误 记住:,有错不可怕,只怕不知道。,“,=,”,与,“,=,”,的区别?,在C语言中,,“,=,”,是关系运算符,易犯得错误是,if(a,=,b)then c=a;,2.,没有使用复合语句?,记住一点:凡是需要两条或多条语句完成的工作一定用,花括号,表示出来;,3.,嵌套关系错误,如果你能用N-S图画出流程,就不会犯这类错误。,建议采用缩进格式(VC中基本自动缩进了)写程序;,4.缺少break语句,对case的执行流程没有记住导致的。,42,讲座,选择结构程序设计,谢谢,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服