欢迎来到天天文库
浏览记录
ID:48735569
大小:150.50 KB
页数:24页
时间:2020-01-20
《C语言05-Control Flow.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、控制流吴清锋2007年秋提纲选择结构if条件运算符switch循环结构whiledo-whileforbreak与continuegoto运算符小结结束小提醒学习这部分内容时:首先,要掌握每一形式的规范。如在if()中,别忽视()的存在;其次,要区分各种形式之间的差异;再次,一定要记住“该用时就该用”(即:记住它们的功能)要思考,引进选择结构和循环结构的背景!什么是选择?什么是循环?结束if(1):if语句的三种形式语句形式(注意联系图示):if(表达式)语句if(表达式)语句1else语句2if(表达式1)语句1elseif(表达式2
2、)语句2……elseif(表达式n-1)语句n-1else语句n示例此处的语句指单个语句,如果在某个分支中需要执行多个操作,必须使用块语句(回忆下!)。包围表达式的小括号是必须的。此处的表达式不要求是逻辑表达式或关系表达式,可以是数值表达式(非0表示真,0表示假)这个else语句n也可以没有此形式一般用来解决带“区间”的问题。注意,表达式的书写及涵盖关系!P96if(2):if语句的嵌套if语句中的内嵌语句也可能是if语句。一般形式是:if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4
3、if(3):if语句歧义歧义情形:if(表达式1)if(表达式2)语句1else语句2解决方案:C规定,else总与较近的if配对。如果想表达左边这种情形必须采用如下形式:if(表达式1){if(表达式2)语句1}else语句2返回表达式1表达式2语句1语句2表达式1表达式2语句1语句2条件运算符(1)当if语句中无论表达式为“真”和“假”时,都只执行一个赋值语句,并赋值语句的左值相同时,C允许使用形式更简单的条件运算符来替代。如:if(a>b)max=a;elsemax=b;等价于max=(a>b)?a:b;其中,(a>b)?a:
4、b为“条件表达式”。条件表达式的一般形式为:表达式1?表达式2:表达式3条件运算符:要求有3个操作对象,是C语言中唯一的三目运算符。条件运算符的执行顺序和条件表达式的值。要求,能够互为转换!条件运算符(2)条件运算符优先级高于赋值运算符,但是低于或运算符。所以max=(a>b)?a:b等价于max=a>b?a:ba>b?a:b+1等价于a>b?a:(b+1)条件运算符的结合方向为“自右至左”。所以a>b?a:c>d?c:d等价于a>b?a:(c>d?c:d)注意,与(a>b?a:c)>d?c:d不同。条件表达式中,三个表达式的类型均可不
5、同。当表达式2和表达式3的类型不同时,可能出现类型转换。如:x>y?1:1.5返回double型switchswitch()是多分支选择语句语句形式:switch(表达式){case常量表达式1:语句组1case常量表达式2:语句组2……case常量表达式n:语句组ndefault:语句组n+1}示例返回表达式可以任意类型,其值将自动转换为整数。各常量表达式的值必须是整数,且各不相同。当某case常量表达式被匹配成功时,将执行其后语句组,执行过程将一直持续到遇见break、return或switch语句的结束“}”。语句形式:wh
6、ile(表达式)语句注意:while的循环体只能包含一个语句,若有多项操作应采用复合语句。while的特点是先判断表达式,后执行循环体;故while语句的循环体可能一次也不被执行。使用while语句经常容易犯的错误是:在循环体中不包含能最终促使循环结束的语句——死循环。这就意味着循环体的书写需要注意!引入“循环变量”的概念!示例(P114(6.2))while返回语句当表达式成立语句表达式成立否则语句形式:do语句while(表达式);注意do-while语句的特点是先执行循环体,再判断循环条件是否成立。故循环体至少执行一次。特别注意,
7、执行过程!P115示例do-while(1)语句直到表达式不成立语句表达式成立否则把do-while转换成while把while转换成do-while总结下,while和do-while之间的差异do-while(2)返回do语句while(表达式);循环体语句while(表达式)语句if(表达式)do语句while(表达式);while(表达式)语句语句形式:一般形式:for(表达式1;表达式2;表达式3)语句for语句的执行过程最简单的应用形式:for(循环变量赋初值;循环条件;循环变量增值)语句如:for(i=0;i<=n;i+
8、+)printf("%d",i);注意:for语句的三个表达式都不是必须的,但作为分隔符的分号却是必须的,下面是一些例子:i=0;for(;i<=n;i++)printf("%d",i);for(i=0;i
此文档下载收益归作者所有