C语言05-ControlFl.ppt

上传人:max****ui 文档编号:3377379 上传时间:2019-12-12 格式:PPT 页数:24 大小:345.81KB
返回 下载 相关 举报
C语言05-ControlFl.ppt_第1页
第1页 / 共24页
C语言05-ControlFl.ppt_第2页
第2页 / 共24页
C语言05-ControlFl.ppt_第3页
第3页 / 共24页
点击查看更多>>
资源描述
控制流,吴清锋2007年秋,提纲,选择结构if条件运算符switch循环结构whiledo-whileforbreak与continuegoto运算符小结,结束,小提醒,学习这部分内容时:首先,要掌握每一形式的规范。如在if()中,别忽视()的存在;其次,要区分各种形式之间的差异;再次,一定要记住“该用时就该用”(即:记住它们的功能)要思考,引进选择结构和循环结构的背景!什么是选择?什么是循环?,结束,if(1):if语句的三种形式,语句形式(注意联系图示):if(表达式)语句if(表达式)语句1else语句2if(表达式1)语句1elseif(表达式2)语句2elseif(表达式n-1)语句n-1else语句n示例,此处的语句指单个语句,如果在某个分支中需要执行多个操作,必须使用块语句(回忆下!)。包围表达式的小括号是必须的。此处的表达式不要求是逻辑表达式或关系表达式,可以是数值表达式(非0表示真,0表示假),这个else语句n也可以没有,此形式一般用来解决带“区间”的问题。注意,表达式的书写及涵盖关系!P96,if(2):if语句的嵌套,if语句中的内嵌语句也可能是if语句。一般形式是:if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4,if(3):if语句歧义,歧义情形:if(表达式1)if(表达式2)语句1else语句2解决方案:C规定,else总与较近的if配对。如果想表达左边这种情形必须采用如下形式:if(表达式1)if(表达式2)语句1else语句2,返回,条件运算符(1),当if语句中无论表达式为“真”和“假”时,都只执行一个赋值语句,并赋值语句的左值相同时,C允许使用形式更简单的条件运算符来替代。如:if(ab)max=a;elsemax=b;等价于max=(ab)?a:b;其中,(ab)?a:b为“条件表达式”。条件表达式的一般形式为:表达式1?表达式2:表达式3条件运算符:要求有3个操作对象,是C语言中唯一的三目运算符。条件运算符的执行顺序和条件表达式的值。,要求,能够互为转换!,条件运算符(2),条件运算符优先级高于赋值运算符,但是低于或运算符。所以max=(ab)?a:b等价于max=ab?a:bab?a:b+1等价于ab?a:(b+1)条件运算符的结合方向为“自右至左”。所以ab?a:cd?c:d等价于ab?a:(cd?c:d)注意,与(ab?a:c)d?c:d不同。条件表达式中,三个表达式的类型均可不同。当表达式2和表达式3的类型不同时,可能出现类型转换。如:xy?1:1.5,返回,double型,switch,switch()是多分支选择语句语句形式:switch(表达式)case常量表达式1:语句组1case常量表达式2:语句组2case常量表达式n:语句组ndefault:语句组n+1示例,返回,表达式可以任意类型,其值将自动转换为整数。各常量表达式的值必须是整数,且各不相同。当某case常量表达式被匹配成功时,将执行其后语句组,执行过程将一直持续到遇见break、return或switch语句的结束“”。,语句形式:while(表达式)语句注意:while的循环体只能包含一个语句,若有多项操作应采用复合语句。while的特点是先判断表达式,后执行循环体;故while语句的循环体可能一次也不被执行。使用while语句经常容易犯的错误是:在循环体中不包含能最终促使循环结束的语句死循环。这就意味着循环体的书写需要注意!引入“循环变量”的概念!示例(P114(6.2),while,返回,语句形式:do语句while(表达式);注意do-while语句的特点是先执行循环体,再判断循环条件是否成立。故循环体至少执行一次。特别注意,执行过程!P115示例,do-while(1),把do-while转换成while把while转换成do-while总结下,while和do-while之间的差异,do-while(2),返回,语句形式:一般形式:for(表达式1;表达式2;表达式3)语句for语句的执行过程最简单的应用形式:for(循环变量赋初值;循环条件;循环变量增值)语句如:for(i=0;i=n;i+)printf(%d,i);注意:for语句的三个表达式都不是必须的,但作为分隔符的分号却是必须的,下面是一些例子:i=0;for(;i=n;i+)printf(%d,i);for(i=0;i0)i+;printf(i=%dn,i);elsei-;if(x=y)|(x=z)printf(xisequaltoyorxisequaltozn);if(a=b)printf(a=%dn,a);,示例:if(2),输入两个数,并要求按由小到大的次序输出main()floata,b,t;scanf(%f%f,扩展下:如果是三个数,如何进行有序的输出呢?注意:上面的题目是,进行有序的输出;而P13(1.6)是只需要最大值的输出,请思考它们实现上的差异!,示例:if(3),输入三个数,并要求按由小到大的次序输出main()floata,b,c,t;scanf(%f%f%f,返回,示例:switch,下列程序片段是否正确?inti=10,j=10;switch(i)casej:printf(i=%d,incase%dn,i,j);case10:printf(i=%d,incase%dn,i,10);#defineJ10inti=10;switch(i)caseJ:printf(i=%d,incase%dn,i,J);case10:printf(i=%d,incase%dn,i,10);,返回,示例:while,输入一个整数,求其阶乘main()intn,p,i;scanf(%d,返回,如果输入小于等于1,循环体将不被执行。程序的不足之处,对于输入是否非负没有判别。,要思考,怎么就不用顺序结构或是选择结构呢?问题本身如何体现出“循环”?,示例:do-while,输入一个整数,求其阶乘main()intn,p,i;scanf(n=%d,返回,注意到,初试化部分不能直接设置i=2,这样将多执行一次乘法!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!