C语言教程选择结构学习教案

上传人:莉**** 文档编号:110292241 上传时间:2022-06-18 格式:PPTX 页数:27 大小:183.95KB
返回 下载 相关 举报
C语言教程选择结构学习教案_第1页
第1页 / 共27页
C语言教程选择结构学习教案_第2页
第2页 / 共27页
C语言教程选择结构学习教案_第3页
第3页 / 共27页
点击查看更多>>
资源描述
会计学1C语言教程语言教程(jiochng)选择结构选择结构第一页,共27页。第1页/共27页第二页,共27页。第2页/共27页第三页,共27页。例:执行(zhxng)表达式(m=ab)&(n=cd)后,问各变量的值当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。第3页/共27页第四页,共27页。4.3 if4.3 if语句语句(yj)(yj) 1、单分支、单分支(fnzh)选择选择if语句语句 if 语句有三种语句有三种(sn zhn)形式:单分支选择形式:单分支选择 if 语句、双分支选择语句、双分支选择if语句、多分支选择语句、多分支选择 if 语句。语句。 语句形式:语句形式: if (表达式)表达式) 语句;语句; 语句执行流程:语句执行流程: 表达式表达式语句语句真真(非非0)假假(0)4.3.1 if4.3.1 if语句的三种形式语句的三种形式第4页/共27页第五页,共27页。if(E)if(E)等价等价(dngji)(dngji)于于 if(E!=0) if(E!=0)if(!E) if(!E) 等价等价(dngji)(dngji)于于 if(E=0) if(E=0)if(E1=E2) if(E1=E2) 与与 if(E1=E2) if(E1=E2)的区别的区别第5页/共27页第六页,共27页。注意注意(zh (zh y)y): (1 1)ifif语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号语句自动结合一个语句,当满足条件需要执行多个语句时,应用一对大括号 将需要执行的多个语句括起,形成将需要执行的多个语句括起,形成(xngchng)(xngchng)一个复合语句。一个复合语句。 (2 2)ifif语句中表达式形式很灵活,可以是常量、变量、任何类型语句中表达式形式很灵活,可以是常量、变量、任何类型(lixng)(lixng)表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。表达式、函数、指针等。只要表达式的值为非零值,条件就为真,反之条件为假。 第6页/共27页第七页,共27页。2、双分支、双分支(fnzh)选择选择if语句语句语句语句(yj)形式:形式:if (表达式)表达式) 语句语句(yj)1;else 语句语句(yj)2 ; 语句执行流程:语句执行流程: 表达式表达式语句语句1真真(非非0)假假(0)语句语句2第7页/共27页第八页,共27页。 if和和else语句之间只能语句之间只能(zh nn)有一个语句,当有一个语句,当ifelse之间的语句不只一句时,应用一对之间的语句不只一句时,应用一对将语句括起。将语句括起。 if(ab) a+;b+;else a=0;b=10; 注意注意(zh y): (zh y): 第8页/共27页第九页,共27页。3、多分支、多分支(fnzh)选择选择if语句语句语句语句(yj)形式:形式:if (表达式表达式1) 语句语句(yj)1;else if (表达式表达式2)语句)语句(yj)2; else if (表达式表达式n)语句)语句(yj)n; else 语句语句(yj)n+1;第9页/共27页第十页,共27页。语句语句(yj)执行流程:执行流程: 表达式表达式1 1语句语句1真真(非非0)假假(0)语句语句2表达式表达式2 2真真(非非0)表达式表达式2 2语句语句n语句语句n+1假假(0)假假(0)第10页/共27页第十一页,共27页。语句语句(yj)含义:含义:语句语句(yj)形式:形式: 当当ifif语句语句(yj)(yj)中又包含若干个中又包含若干个ifif语句语句(yj)(yj)时,则构成了时,则构成了ifif语句语句(yj)(yj)嵌套的情形。嵌套的情形。4.3.2 4.3.2 if语句的嵌套语句的嵌套if ( 表达式表达式1) if ( 表达式表达式2) 语句语句1; if ( 表达式表达式1) if ( 表达式表达式2) 语句语句1; else 语句语句2;第11页/共27页第十二页,共27页。注意注意: 当当if语句中出现多个语句中出现多个“if”与与“else”的时候,要特别注意它们之间的匹配关系,否则的时候,要特别注意它们之间的匹配关系,否则(fuz)就可能导致程序逻辑错误。就可能导致程序逻辑错误。 “else” “else”与与“if”“if”的匹配的匹配(ppi)(ppi)原则是原则是“就近一致原则就近一致原则”,即,即“else”“else”总是与它前面最近的总是与它前面最近的“if”“if”相匹配相匹配(ppi)(ppi)。例 有一个(y )函数,编一程序,输入一个x值,输出y值。)0(1)0(0)0(1xxxy第12页/共27页第十三页,共27页。上例中的程序段有四个,请判断哪个(n ge)是正确的?程序(chngx)1: if(x=0) if(x0) y=1; else y=0;else y=-1; 程序3: y=-1; if(x!=0) if(x0) y=1;else y=0; 程序4: y=0; if(x=0) if(x0) y=1; else y=-1; 第13页/共27页第十四页,共27页。第14页/共27页第十五页,共27页。例: if (ab) max=a; else max=b;当ab时将a的值赋给max,当ab时将b的值赋给max,可以看到无论ab是否满足,都是向同一个变量赋值,可以用下面(xi mian)的条件运算符来处理: max=(ab)?a:b;第15页/共27页第十六页,共27页。4.5 switch4.5 switch语句语句(yj)(yj)1、语句、语句(yj)形式:形式: switch(表达式表达式) case 常量常量(chngling)1: 语句语句1; case 常量常量(chngling)2: 语句语句2; case 常量常量(chngling)3: 语句语句3; . case 常量常量(chngling)n: 语句语句n; default : 语句语句n+1; 。数值型数值型或或字符型字符型常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。千万不能接千万不能接(;)号号第16页/共27页第十七页,共27页。2、语句、语句(yj)执行流执行流程:程:指语句的最指语句的最后一条后一条(y tio)是否为是否为break简单语句简单语句(yj)或复合或复合语句语句(yj)breakbreakbreakbreak有有无breakbreak有无有计算表达计算表达式式常量常量1 1常量常量2 2常量常量n n=语句语句1 1=语句语句2 2语句语句n n其它其它=语句语句n+1n+1无值值第17页/共27页第十八页,共27页。例例 假设用假设用0 0、1 1、2.62.6分别表示星期日、星期一分别表示星期日、星期一.星期六。现输入一个星期六。现输入一个(y )(y )数字,输出对应的星期几的英文单词。如果输入数字,输出对应的星期几的英文单词。如果输入3 3,输出,输出“Wednesday”“Wednesday”。 程 序 运 行 情 况程 序 运 行 情 况(qngkung)(qngkung)如下:如下:33Wednesday Wednesday ThursdayThursdayFridayFridaySaturdaySaturdayerrorerror#include stdio.hvoid main() int n; scanf(%d,&n); switch(n) case 0: printf(Sundayn); case 1: printf(Mondayn); case 2: printf(Tuesdayn); case 3: printf(Wednesdayn); case 4: printf(Thursdayn); case 5: printf(Fridayn); case 6: printf(Saturdayn); default: printf(Error); 第18页/共27页第十九页,共27页。 在在“switch”“switch”语句中,语句中,“case “case 常量表达式常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch switch 语句,因此会继续执行所有后面语句,因此会继续执行所有后面(hu mian)(hu mian)语句的情况。语句的情况。 为此,语言提供了一种为此,语言提供了一种breakbreak语句,其功能是可以跳出语句,其功能是可以跳出(tio ch)(tio ch)它所在的它所在的switchswitch语句。语句。第19页/共27页第二十页,共27页。将上例将上例4 4修改修改(xigi)(xigi)如下:如下:#include stdio.hvoid main() int n; scanf(%d,&n); switch(n) case 0: printf(Sundayn); break;case 1: printf(Mondayn); break;case 2: printf(Tuesdayn); break;case 3: printf(Wednesdayn); break;case 4: printf(Thursdayn); break;case 5: printf(Fridayn); break;case 6: printf(Saturdayn); break;default: printf(Error);程 序 运 行 情 况程 序 运 行 情 况(qngkung)(qngkung)如下:如下:33Wednesday Wednesday 第20页/共27页第二十一页,共27页。3、说明、说明(shumng)多个多个casecase语句可以共用语句可以共用(n yn)(n yn)一组执行语句。一组执行语句。 switch(grade) case A: case B: case C:printf(grade=60n);break; default:printf(grade60);各各casecase和和defaultdefault子句的先后顺序可以变动子句的先后顺序可以变动(bindng)(bindng),而不会影响程序执行结果。,而不会影响程序执行结果。 第21页/共27页第二十二页,共27页。defaultdefault语句可以省略语句可以省略(shngl)(shngl)不用。不用。casecase与其与其(yq)(yq)后面的常量表达式间至少有一个空格。后面的常量表达式间至少有一个空格。switchswitch语句语句(yj)(yj)可以嵌套,可以嵌套,breakbreak语句语句(yj)(yj)只跳出它所在的只跳出它所在的switchswitch语句语句(yj)(yj)。 第22页/共27页第二十三页,共27页。例例 企业发放的奖金根据企业发放的奖金根据(gnj)(gnj)利润提成。从键盘输入当月利润,求应发放奖金总数?利润提成。从键盘输入当月利润,求应发放奖金总数? 10%1012%102014%204016%406018%6010020%100利润利润万利润利润万利润利润万奖金利润利润万利润利润万利润利润万第23页/共27页第二十四页,共27页。利润(lrn)xx=1010 x2020 x4040 x6060 x100100 x (int )x/10 常量常量(chngling)0,11,22,3,44,5,66,7,8,9,1010以上以上用这种方法转换后,用这种方法转换后,n n出现了在不同区域有重复数字出现了在不同区域有重复数字(shz)(shz)的情况。解决的方法有很多,其中一种是可以采用当的情况。解决的方法有很多,其中一种是可以采用当x x为为1010的整数倍时,将计算出的的整数倍时,将计算出的n n值减值减1 1。 使用使用switchswitch解题的关键,通过分析找到表达式,将问题分成几种情况。解题的关键,通过分析找到表达式,将问题分成几种情况。第24页/共27页第二十五页,共27页。结果结果(ji gu):a=2,b=1第25页/共27页第二十六页,共27页。main() int x,f=0; scanf( “%d”,&x ); if( 1 ) ( 2 ) if(f=1) printf(“YESn”); else printf(“NOn”);1 x%3=0 | x%7=02 f=1;第26页/共27页第二十七页,共27页。
展开阅读全文
相关资源
相关搜索

最新文档


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


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

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


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