收藏 分销(赏)

第4章 选择结构程序设计2.ppt

上传人:xrp****65 文档编号:13745304 上传时间:2026-04-08 格式:PPT 页数:33 大小:502.50KB 下载积分:10 金币
下载 相关 举报
第4章 选择结构程序设计2.ppt_第1页
第1页 / 共33页
第4章 选择结构程序设计2.ppt_第2页
第2页 / 共33页


点击查看更多>>
资源描述
上一页,下一页,C语言程序设计教程,第4,章 选择结构程序设计,4.1,关系运算符与关系表达式,4.2,逻辑运算符与逻辑表达式,4.3,if,语句,4.4,switch,语句,4.5,结构嵌套程序举例,(其中,4.1、4.2,两节已在第二章中详细介绍,此处不再赘述。),教学目的和基本要求:,要求学生掌握选择结构程序设计,嵌套程序设计,学会运用,if,语句及,switch,语句。,教学重点:,if,语句、嵌套程序。,很多问题是顺序结构解决不了的,看这样一个例子:,计算分段函数,x,在大于等于,0,和小于,0,两种不同的情况时,函数将用不同的表达式来求,y,的值,这时就需要在计算,y,的值之前,先对,x,的值进行判断,,C,语言中用选择语句来实现这一判断。算法,N-S,图如右上图所示。,x0,Y,N,y=3-x,y=2x,N-S,图,C,语言中的选择语句有两种:,双分支选择语句,if,多分支选择语句,switch,4.3,if,语句,表达式,语句,真,假,语句,表达式,1.,if,语句的最简单形式:,说明:,1.,条件表达式的值为,1或0,,必须用,(),括住,2.,若有多条语句(复合语句)时,用,括住。,3.(,条件表达式,),后不要加;,if(,条件表达式,),语句;,if(,条件表达式,),语句;语句;,main(),float x,y;,scanf,(“%f”,y=2*x;,if(x 0)y=3-x;,printf,(“y=%.2f”,y);,例:计算分段函数,main(),int,x,y;,scanf,(“%d,%d”,if(x y),t=x;,x=y;,y=t;,printf,(“x=%d,y=%d”,x,y);,例:输入两个数,X,Y,,如果,x,大于,y,,则交换两数。,2.,if,语句的双分支形式:,if (,表达式,),语句,1,else,语句,2,首先先判断表达式的值,若为非,0,则执行语句,1,若为,0,则执行语句,2,表达式,语句,1,真,假,语句,2,表达式,语句,1,语句,2,执行过程:,if,语句的双分支形式,在语法上视为一条语句。,main(),float x,y;,scanf,(“%f”,if(x b,则输出,a;,否则,输出,b。,#,include,main(),float a,b;,scanf,(“%f,%f”,if (ab),printf,(“%f”,a);,else,printf,(“%f”,b);,练习:编程实现,从键盘输入一个字符,如果是字母,则输出对应的,ASCII,码,否则,输出“,%”,。,main(),char a;,scanf,(%c,if(),printf,(“n,a);,else,printf,(“n);,a=A&a=a&a=z,%d,%,if,语句的语句,1,和语句,2,又称为,if,的执行语句。,if,的执行语句在语法上是一条语句,可以是任何类型的语句,简单语句、复合语句、空语句、流程控制语句都可以作为,if,的执行语句。,下面我们通过一个例子分别介绍用不同的语句作为,if,的执行语句的情形:,例:计算分段函数:,y=,2*x,x=-10,2+x,-10 x=0,x-2,0 x10,方法一:用简单语句,#,include,main(),float x,y;,scanf,(“%f”,if(x=-10)y=2*x;,if(-10 x,if(010)y=x/10;,printf,(“,ny,=%f”,y);,方法二:用,if,语句做语句,2,#,include,main(),float x,y;,scanf,(“%f”,if(x=-10)y=2*x;,else if(x=0)y=2+x;,else if(x=10)y=x-2;,else y=x/10;,printf,(“,ny,=%f”,y);,这种用,if,语句作为上一层,if,语句的语句,2,的结构,,称为,if,语句的多分支选择结构。,多分支选择语句一般形式:,if (,表达式,),语句,1,else if(,表达式,),语句,2,else,先判断表达式,1,的值,非0,就执行下面的语句,为0,就执行下一个判断,一直这样做下去,表达式,1,真,语句,1,假,表达式,2,表达式,3,语句,4,语句,3,语句,2,真,真,假,假,直到得出最后结果,流程图如左:,方法三:语句,1,与语句,2,都为,if,语句,#,include,main(),float x,y;,scanf,(“%f”,if(x=-10)y=2+x;,else y=2*x;,else,if(x=10)y=x-2;,else y=x/10;,printf,(“,ny,=%f”,y);,这种用,if,语句作为上一层,if,语句的语句,1,和语句,2,的结构,称为,if,语句的嵌套。,if,语句的二层嵌套结构如下:,if(,表达式,1),if(,表达式,1_2),语句,1_,1;,else,语句,1_,2;,else,if(,表达式,2_1),语句,2_,1;,else,语句,2_,2;,表达式,1_2,表达式,1,表达式,1_2,语句,1_1,语句,1_2,语句,2_1,语句,2_2,非0,0,0,非0,0,非0,如:,if(a=b&x=y),printf,(“a=b,x=y”);,if(3),printf,(“OK”);,if(a),printf,(“%d”,a);,if,后面的表达式类型任意,语句可以是复合语句,if(x),if(x!=0),if(!x),if(x=0),例 考虑下面程序的输出结果,:,#,include,main(),int,x,y;,scanf,(“%d,%d”,if(xy),x=y;y=x;,else,x+;y+;,printf,(“%d,%dn”,x,y);,Compile Error!,说明:,:,一般形式:,if(expr1),if(expr2)statement1,else statement2,else,if(expr3)statement3,else statement4,内嵌,if,内嵌,if,if(expr1),if(expr2),statement1,else,statement2,内嵌,if,if(expr1),if(expr2),statement1,else,statement3,内嵌,if,if(expr1),statement1,else,if(expr3),statement3,else,statement4,内嵌,if,if,语句嵌套,缺省,时,,else,总是和它上面离它最近的未配对的,if,配对,if(),if(),if(),else.,else.,else.,if else,配对原则:,实现,if else,正确配对方法,例:,if(a=b),if(b=c),printf,(“a=b=c”);,else,printf,(“a!=b”);,修改:,if(a=b),if(b=c),printf,(“a=b=c”);,else,printf,(“a!=b”);,实现,if else,正确配对方法:加,if,语句编程举例,:,例,1.,写一个程序完成下列功能,:,输入一个分数,score,当,score60,输出,E,当60=,score 70,输出,D,当70=,score 80,输出,C,当80=,score 90,输出,B,当90=,score,输出,A,#,include,main(),float score;,scanf,(“%f”,if(score60),printf,(“%c”,E);,else if(score 70),printf,(“%c”,D);,else if(score 80),printf,(“%c”,C);,else if(score=150,在,sex,不为,F,的分支中判断,tall,是否,=170,#,include,main(),int,tall;char sex;,printf,(“input sex and tall:”);,scanf,(“%c%d”,if (sex=F),if (tall=150),printf,(“A”);,else,printf,(“B”);,else,if (tall=170),printf,(“A”);,else,printf,(“B”);,程序如下:,4.4,Switch,语句,if,语句是根据表达式的值是否为,0,来判断执行哪一分支的,某些情况下,要根据表达式的不同值来判断执行哪一分支,如表达式的值为,1,2,3,时,分别执行不同的操作。虽然也可以用多条,if,语句来完成这一工作,但,c,语言中提供了一条,switch,语句,可以更方便的完成。,switch,表达式,语句组,1,语句组,2,语句组,n,语句组,.,E 1,E 2,En,default,case,一般形式:,switch(,表达式,),case E1:,语句组,1;,break;,case E2:,语句组,2;,break;,.,case En:,语句组,n;,break;,default:,语句组,;,break;,执行过程,:,switch,语句,(,开关分支语句,),:,E1,E2,En,是常量表达式,且值必须互不相同,语句标号作用,必须用,break,跳出,case,后可包含多个可执行语句,且不必加,多个,case,可共用一组执行语句,如:,case A:,case B:,case C:,printf,(“score60n”);,break;,.,说明:,例:看下面的程序在几种不同输入情况下的输出:,#,include,main(),char i;,scanf,(“%c”,switch(i),case a:i+;,printf,(“%c”,i);break;,case b:i+;,printf,(“%c”,i);,default:i=i+2;printf(“%d”,i);,1.,输入:,a,输出:,b,2.,输入:,b,输出:,c101,3.,输入:,c,输出:,101,例:,编程:根据输入的学生的成绩判断等级。当成绩,score 90,时为,A,等;,成绩,70,score 90,为,B,等;,成绩,60,score 70,为,C,等;,成绩,score 60,为,D,等,(,score,为整数,),。,分析:设,score,为整型数,利用两个整数相除,结果自动取整的特性,,score,和,score/10,有如下对应关系:,score score/10,90,以上,10,9,7089 7,8,6069 6,60,以下,5,4,3,2,1,0,因此,可以用,score/10,的值来确定分支。,#,include main(),int,score;,scanf,(%d,switch(score/10)case 10:case 9:,printf,(%d:An,score);break;case 8:,case 7:,printf,(%d:Bn,score);break;case 6:,printf,(%d:Cn,score);break;default:,printf,(%d:Dn,score);p56-11,程序:,思考题,已知,C,调17的频率分别为:523,578,659,698,784,880,988,,i-1046;,音响函数为,sound(f)、,nosound,()。,请编写对应程序,使计算机数字1-8键对应相应音符,以便在计算机上能弹出简单乐曲,本章结束,再见!,同学们:,
展开阅读全文

开通  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 

客服