C语言第4章选择结构.ppt

上传人:tia****nde 文档编号:12706220 上传时间:2020-05-14 格式:PPT 页数:47 大小:576KB
返回 下载 相关 举报
C语言第4章选择结构.ppt_第1页
第1页 / 共47页
C语言第4章选择结构.ppt_第2页
第2页 / 共47页
C语言第4章选择结构.ppt_第3页
第3页 / 共47页
点击查看更多>>
资源描述
if语句,关系表达式和逻辑表达式,if语句的变形及嵌套,多重选择语句(switch语句),本章小结,本章内容,第4章选择结构程序设计,第四章选择结构程序设计,问题与讨论:,第四章分支结构程序设计,解决办法:,1、引入新的程序结构,选择结构,有时也称判断结构或分支结构。,2、为了和分支结构相配合,同时还要引入逻辑表达式的概念。,3、有三种形式可进行分支结构的程序设计,A、if结构B、多重选择结构(switch语句)C、无条件转移结构(goto语句),第4章选择结构程序设计,【例4.1】输入两个正整数,并按从小到大的顺序输出。,voidmain()inta,b,t;scanf(%d,%d,voidmain()inta,b;scanf(%d,%d,图3-2变换a和b的值,if(ab)t=a;a=b;b=t;,if条件“真”复合语句1else复合语句2,(1)if,else为关键字(2)如果语句块超过一条语句,则要用一对大括号将语句块括起作为复合语句(3)else可省,语法:,说明:,if语句,计算逻辑表达式的值,真否?,复合语句1,复合语句2,执行复合语句后的语句,F,T,ifelse的执行过程,【例4.6】编写程序,求输入的整数的绝对值并将其输出。,voidmain()intx,x1;scanf(“%d”,形式:if(表达式)语句块,【例4.7】比较用户输入的两个整数的大小。若输入的第1个数大于第2个数,则显示:firstsecond,#includevoidmain()intfirst,second;printf(Entertwonumbers:);scanf(%d%d,形式:if(表达式)语句块else语句块,一、if语句的变形,1、省略else语句语法:if逻辑表达式“真”语句体,2、增加else语句,语法:if逻辑表达式1“真”语句体1elseif逻辑表达式2“真”语句体2.else语句体N,if语句的变形,形式:if(表达式)语句块,形式:if(表达式)语句块elseif语句块else语句块,if逻辑表达式“真”语句块1if逻辑表达式2“真”语句块2else语句块3else语句块4,注意:else语句与最近的if语句配套,if语句的嵌套,注意:嵌套必须完全包住,不能相互骑跨。在if的嵌套中,else,elseif与最近的if相匹,大括号要配对。,if逻辑表达式1语句块1if逻辑表达式2语句块2else语句块3else语句块4语句块5,忌讳:大括号不配对,也不对齐,不知谁跟谁配对,【例4-9】编写一程序,进行十进制数、八进制数和十六进制数之间的转换。(04.doc),【例】商店售货,按购买货物款的多少分别给予不同的优惠折扣,编程计算实际应付货款。(1)购货不足250元,没有折扣;(2)购货250元(含250元,下同),不足500元,减5%(3)购货500元,不足1000元,减价7.5%;(4)购货1000元,不足2000元,减价10%;(5)购货2000元及以上,减价15%;,1、算法分析:设购物款为M,折扣为D,则D可表示为:D=0(M250)D=0.05(250M500)D=0.075(500M大于4+69=大于或等于6=5=小于或等于8=7=等于2+3=6!=不等于9+3!=12,TTTFFF,相同,高,相同,低,关系表达式和逻辑表达式,用关系运算符将两个算术表达式或两个字符串表达式联起来的式子,其值为逻辑值。,例#includemain()inta,b;a=10=53;printf(“%d,%dn”,a,b);输出结果:,1,1,三、关系表达式,!(非),scanf(“%d,%d“,在某种情况下,条件运算符可以代替if语句,简化程序书写,voidmain()inta,b;scanf(“%d,%d“,改写后,【例?:】从键盘输入两个整数,按大小顺序输出,【例】从键盘输入一字符,如果为Y,则打印是,若为N,打印否,其它字符,打印输入错误。,#includevoidmain()chara;printf(“输入一个字符:”);a=getchar();if(a=“Y”|a=“N”)if(a=“Y”)printf(“是”);elseprintf(“否”);elseprintf(“输入数据不合要求”);,嵌套不能太深,一般以三层为限,嵌套太深,容易出错。,【例4-12】用户从键盘输入3个整数,找出并输出其中数值最大的那一个。如果其中有一个以上的最大数(两数相等的情况),也要表示出来。,#includevoidmain()inta,b,c;printf(Enter3numbers:);scanf(%d%d%d,#includevoidmain()intx,y,z;printf(“Iputx,y,z:”);scanf(“%d,%d,%d”,嵌套不能太深,一般以三层为限,嵌套太深,容易出错。,【例】从键盘输入三个整数,判断其正负情况,#includevoidmain()intx,y,z;printf(“Iputx,y,x:”);scanf(“%d,%d,%”,利用逻辑表达式将上例改写,第4章选择结构程序设计,改写后的程序结构要清晰得多,【例】将输入的字母转化为小写字母。,1算法分析,在计算机中,处理英文字母,其实是处理它的ASCII码值。将大写字母变成小写字母,就是将大写字母的ASCII码值变为相应的小写字母的ASCII码值。,大写字母的ASCII值比小写字母的ASCII值小32,故将相应字母的ASCII值加32就变成了小写字母。,程序设计时,要注意如果输入的不是大写的字母,则不用转换。,voidmain()charch;scanf(“%c”,2源程序代码之一,voidmain()charch;scanf(“%c”,注意:1、条件运算符优先于赋值运算符,低于关系运算符2、条件运算符的结合方向为“自右至左”ab?a:cd?c:dab?a:(cd?c:d),此处使用了条件运算符,3源程序代码之二,等价于,#includevoidmain()inti;printf(“输入数字1-7:”);scanf(“%d”,【例】输入星期中的某一天,显示对应的英文,是否有更好的办法来解决多分支程序结构?,?,语法:switch(表达式)case常量表达式1:语句块1case常量表达式2:语句块2.case常量表达式N:语句块Ndefault:语句块N+1,switch多重选择语句,说明:switch后的表达式可以是char,byte,short,orint类型,case后的表达式与switch后的表达式相等时,case后的语句被执行。若一个相等的也没有时,执行default后面语句。若没有default时,则结束switch语句,case后的表达式必须互不相同,否则出错,case与default出现的顺序不影响执行结果。,执行完一个case语句块后,流程转到下一个case语句继续执行。,在执行过程中碰到break语句,程序退出switch结构。,voidmain()inti;printf(“输入数字1-7:”);scanf(“%d”,【例switch】用switch语句重写打印星期程序。,voidmain()inti;printf(“输入数字1-7:”);scanf(“%d”,语法:break;,功能:1:退出所在switch语句2:退出所在循环(for,while,do),break语句,格式:continue;,功能:忽略continue以下的循环体,重新回到循环开始(对continue所在循环有效)。,continue语句,【例】用switch语句重写前例的程序,voidmain()chara;printf(“输入一个字符:”);a=getchar();if(a=“Y”|a=“N”)if(a=“Y”)printf(“是n”);elseprintf(“否n”);elseprintf(“字符不合要求!n”);,voidmain()chara;printf(“输入字符:”);a=getchar();switch(a)caseY:printf(“是n”);break;caseN:printf(“否n”);break;default:printf(“字符不合要求!n”);,【例4-9B】在屏幕上显示菜单,分析:程序首先在屏幕上将功能显示出来,用户根据需要选择相应的功能,程序根据用户的选择执行相应的程序段。,对于这类程序,往往是用户输入一个英文字母,然后程序根据字母来断别程序该执行什么程序段,故一般用switch语句比较方便。,2源程序清单,switch(a)casei:printf(“调用输入模块!”);break;caseo:printf(“调用输出模块!”);break;casel:printf(“调用查找模块!”);break;caseq:printf(“调用退出模块!”);break;,main()intchara;printf(“请选择:”);printf(“输入i”);printf(“输出o”);printf(“找出最长的单词l”);printf(“退出q”);a=getchar();,执行选项时,要调用相应的模块(程序段)。由于现在还没有相应的程序,暂用一条打印语句代替。,以后会用相应程序代替,语法:goto语句标号(有效的C标识符,不能是整数),功能:改变程序执行的顺序,无条件转移到语句标号所指定的语句行。,语句标号:语句某一行的名字,一般情况下可省。,定义标号例:loop:x=x+1;,无条件转移语句(goto语句),使用goto例:gotoloop;,【例4.14】统计某班级中计算机课程中考试成绩高于80分的人数。假设学生人数为,voidmain()inti,fs,j=0;Loop:scanf(“%d”,1、分支结构:改变程序的执行流程,或有选择地执行程序;,2、ifelse和switch是结构化语句,而goto语句不是;,3、块if语句可以取代所有的分支结构,而多重分支结构不可;,4、块if语句中的条件可以是复杂逻辑表达式,而多重分支中的条件只能是简单表达式;,5、块if与goto语句结合,可以构造任何复杂的循环,但用专门的循环语句更方便。,本章小结,易出错内容,if后的条件不用括号括起来if条件后加上分号关系运算符和赋值运算符区分习惯于数学的区间表示,如00&x5if多层嵌套语句的匹配关系分不清在switch语句中漏掉break语句,作业,1、编写程序,输入一个整数,输出它是奇数还是偶数。2、输入3个整数,要求按照从大到小的顺序输出。3、输入一个整数,求其平方根和立方根。(考虑负数情况)4、p1115.65、p1115.8,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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