cha分支结构课件

上传人:风*** 文档编号:240746571 上传时间:2024-05-04 格式:PPTX 页数:46 大小:433.93KB
返回 下载 相关 举报
cha分支结构课件_第1页
第1页 / 共46页
cha分支结构课件_第2页
第2页 / 共46页
cha分支结构课件_第3页
第3页 / 共46页
点击查看更多>>
资源描述
Chap3分支结构分支结构3.1简单的猜数游戏简单的猜数游戏3.2四则运算四则运算3.3查询自动售货机中商品的价格查询自动售货机中商品的价格本章要点本章要点n什么是分支结构?它的作用是什么?什么是分支结构?它的作用是什么?nswitch语句中的语句中的break起什么作用?起什么作用?n逻逻辑辑运运算算和和关关系系运运算算的的相相同同之之处处是是什什么么?它们之间又有什么不同?它们之间又有什么不同?n字符型数据在内存中是如何存储的?字符型数据在内存中是如何存储的?3.1简单的猜数游戏简单的猜数游戏3.1.1程序解析程序解析3.1.2二分支结构和二分支结构和ifelse语句语句3.1.3多分支结构和多分支结构和elseif语句语句例例3-1简单的猜数游戏。输入你所猜的整数简单的猜数游戏。输入你所猜的整数(假定(假定1 1100100内),与计算机产生的被猜数比内),与计算机产生的被猜数比较,若相等,显示猜中;若不等,显示与被猜较,若相等,显示猜中;若不等,显示与被猜数的大小关系。数的大小关系。3.1.1程序解析程序解析#includeintmain(void)intmynumber=38;intyournumber;printf(Inputyournumber:);scanf(%d,&yournumber);if(yournumber=mynumber)printf(Ok!youareright!n);elseif(yournumbermynumber)printf(Sorry!yournumberisbiggerthanmynumber!n);elseprintf(Sorry!yournumberissmallerthanmynumber!n);return0;多层缩进的书写格式多层缩进的书写格式使程序层次分明使程序层次分明 Inputyournumber:48Sorry!yournumberisbiggerthanmynumber!Inputyournumber:38Ok!youareright!3.1.2二分支结构和二分支结构和if-else语句语句if(表达式表达式)语句语句1else语句语句2if(表达式表达式)语句语句1语句语句1表达式表达式语句语句2真真(非非0)假假(0)语句语句1表达式表达式真真(非非0)假假(0)一条语句一条语句判断数字的奇偶性判断数字的奇偶性例例3-2输入输入1个整数,判断该数是奇数还是偶数。个整数,判断该数是奇数还是偶数。number%2=0读入一个整数读入一个整数if(该数能被该数能被2整除整除)则该数为偶数则该数为偶数else该数为奇数该数为奇数源程序源程序-判断数字的奇偶性判断数字的奇偶性#includeintmain(void)intnumber;printf(Enteranumber:);scanf(%d,&number);if(number%2=0)printf(”Thenumberiseven.n);elseprintf(”Thenumberisodd.n);return0;Enteranumber:329Thenumberisodd.Enteranumber:1028Thenumberiseven.统计学生的成绩统计学生的成绩例例3-3输输入入一一个个正正整整数数n,再再输输入入n个个学学生生的的成成绩绩,计计算算平平均均分分,并并统统计计不不及及格格成成绩绩的的个数。个数。for(i=1;i=n;i+)输入输入1个学生的成绩个学生的成绩grade累加成绩累加成绩total统计不及格成绩的个数统计不及格成绩的个数count#includeintmain(void)intcount,i,n;doublegrade,total;printf(Entern:);scanf(%d,&n);total=0;count=0;for(i=1;i=n;i+)printf(Entergrade#%d:,i);scanf(%lf,&grade);total=total+grade;if(grade60)count+;printf(Gradeaverage=%.2fn,total/n);printf(Numberoffailures=%dn,count);return0;源程序源程序-统计成绩统计成绩Entern:4Entergrade#1:67Entergrade#2:54Entergrade#3:88Entergrade#4:73Gradeaverage=70.50Numberoffailures=1此处省略此处省略elseif(表达式表达式1)语句语句1;elseif(表达式表达式2)语句语句2;elseif(表达式表达式n-1)语句语句n-1;else语句语句n;3.1.3多分支结构和多分支结构和elseif语句语句else-if语句是最常用的实现多分支(多路选语句是最常用的实现多分支(多路选择)的方法择)的方法if(表达式表达式1)语句语句1elseif(表达式表达式2)语句语句2elseif(表达式表达式n-1)语句语句n-1else语句语句n假假表达式表达式1表达式表达式2语句语句1语句语句2语句语句n-1语句语句n真 表达式表达式n-1假假真真 假假假假真 n个分支需要个分支需要n-1次比较次比较elseif语句语句更改例更改例2-4中的分段计算水费的问题中的分段计算水费的问题例例3-4 例例2-4中提出的分段计算水费的问题。中提出的分段计算水费的问题。居民应交水费居民应交水费y(y(元元)与月用水量与月用水量x(x(吨吨)的函数的函数关系式修正如下,并编程实现。关系式修正如下,并编程实现。源程序源程序-分段计算水费分段计算水费#includeintmain(void)doublex,y;printf(Enterx:);scanf(%lf,&x);if(x0)y=0;elseif(x=15)y=4*x/3;elsey=2.5*x-10.5;printf(f(%.2f)=%.2fn,x,y);return0;Enterx:-0.5f(-0.50)=0.00Enterx:9.5f(9.50)=12.67Enterx:21.3f(21.30)=42.75Enterx:?3.2四则运算四则运算3.2.1程序解析程序解析3.2.2字符类型字符类型3.2.3字符型数据的输入和输出字符型数据的输入和输出3.2.4逻辑运算逻辑运算例例3-5 求解简单的四则运算表达式。求解简单的四则运算表达式。输入一个形式如输入一个形式如“操作数操作数 运算符运算符 操作数操作数”的四的四则运算表达式,输出运算结果。则运算表达式,输出运算结果。3.2.1程序解析程序解析#includeintmain(void)doublevalue1,value2;charop;printf(Typeinanexpression:);scanf(%lf%c%lf,&value1,&op,&value2);if(op=+)printf(=%.2fn,value1+value2);elseif(op=-)printf(=%.2fn,value1-value2);elseif(op=*)printf(=%.2fn,value1*value2);elseif(op=/)printf(=%.2fn,value1/value2);elseprintf(Unknownoperatorn);return0;例例3-5输入一个形式如输入一个形式如“操作操作数数 运算符运算符 操作数操作数”的四则运的四则运算表达式,输出运算结果。算表达式,输出运算结果。Typeinanexpression:3.1+4.8=7.903.2.2字符类型字符类型(op=+)(op=-)字符型数据字符型数据字符变量:字符变量:op字符常量字符常量:+-*/charop;字符常量字符常量 azAZ09nASCII字符集:列出所有可用的字符字符集:列出所有可用的字符每个字符:惟一的次序值(每个字符:惟一的次序值(ASCII码)码)0-9A-Za-z区分数字区分数字1和数字字符和数字字符1字符变量字符变量 charop;定义字符变量定义字符变量op,用于存放字符型数据。用于存放字符型数据。op=+;将字符型常量将字符型常量+赋值给字符型变量赋值给字符型变量opop3.2.3字符型数据的输入和输出字符型数据的输入和输出n调用调用scanf和和printf输入输出字符输入输出字符doublevalue1,value2;charoperator;printf(“Typeinanexpression:”);scanf(“%lf%c%lf”,&value1,&op,&value2);printf(“%.2f%c%.2f”,value1,op,value2);Typeinanexpression:10.0+5.61 10.00+5.61 输入时,操作数和运算符之间不能出现空格(输入时,操作数和运算符之间不能出现空格()n字符输入函数字符输入函数getchar()输入输入一个一个字符字符charch;ch=getchar();n字符输出函数字符输出函数putchar()输出输出一个一个字符字符putchar(输出参数输出参数);字符常量或字符变量字符常量或字符变量charch;ch=getchar();putchar(ch);putchar(?);aa?只能处理单个字符的输入和只能处理单个字符的输入和输出,调用一次函数,只能输出,调用一次函数,只能输入或输出一个字符。输入或输出一个字符。3.2.4逻辑运算逻辑运算charch;printf(Enteracharacter:);ch=getchar();if(ch=a&ch=A&ch=-1并且并且x=-1&x=1-1=x1)&(y1)(x1)|(y1)(x1)!(x1)即即x=a)&(ch=a&ch=a&ch=A&ch=Z)判断判断ch是否为英文字母,分大小写是否为英文字母,分大小写条件的表示条件的表示例例3-6写出满足下列条件的写出满足下列条件的C表达式。表达式。nch是空格或者回车。是空格或者回车。ch=|ch=nnnumber是偶数。是偶数。number%2=0nyear是闰年,即是闰年,即year能被能被4整除但不能被整除但不能被100整除,或整除,或year能被能被400整除。整除。(year%4=0&year%100!=0)|(year%400=0)#includeintmain(void)intdigit,i,letter,other;charch;digit=letter=other=0;printf(“Enter10characters:);for(i=1;i=a&ch=A&ch=0&ch=9)/*如果如果ch是数字字符是数字字符*/digit+;elseother+;printf(“letter=%d,digit=%d,other=%dn”,letter,digit,other);return0;例例3-7 输输入入10个个字字符符,统统计计其其中中英英文文字字母母、数数字字字字符符和其他字符的个数。和其他字符的个数。input10characters:Reold123?letter=5,digit=3,other=23.3查询自动售货机中商品的价格查询自动售货机中商品的价格3.3.1程序解析程序解析3.3.2switch语句语句3.3.3多分支结构多分支结构例例3-8查询自动售货查询自动售货机中商品的价格机中商品的价格3.3.1程序解析程序解析假假设设自自动动售售货货机机出出售售4种种商商品品,薯薯片片(crisps)、爆爆米米花花(popcorn)、巧巧克克力力(chocolate)和和可可乐乐(cola),售售价价分别是每份分别是每份3.0、2.5、4.0和和3.5元。元。在在屏屏幕幕上上显显示示以以下下菜菜单单,用用户户可可以以连连续续查查询询商商品品的的价价格格,当当查查询询次次数数超超过过5次次时时,自自动动退退出出查查询询;不不到到5次次时时,用户可以选择退出。用户可以选择退出。当当用用户户输输入入编编号号14,显显示示相相应应商商品品的的价价格格;输输入入0,退出查询;输入其他编号,显示价格为退出查询;输入其他编号,显示价格为0。1Selectcrisps2Selectpopcorn3Selectchocolate4Selectcola0Exit#includeintmain(void)intchoice,i;doubleprice;for(i=1;i=5;i+)printf(1Selectcrispsn);printf(2Selectpopcornn);printf(3Selectchocolaten);printf(4Selectcolan);printf(0exitn);printf(Enterchoice:);scanf(%d,&choice);if(choice=0)break;switch(choice)case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;printf(price=%0.1fn,price);printf(Thanksn);1Selectcrisps2Selectpopcorn3Selectchocolate4Selectcola0ExitEnterchoice:1price=3.01Selectcrisps2Selectpopcorn3Selectchocolate4Selectcola0ExitEnterchoice:7price=0.01Selectcrisps2Selectpopcorn3Selectchocolate4Selectcola0ExitEnterchoice:0Thanks3.3.2switch语句语句处理多分支选择问题,处理多分支选择问题,3种情况种情况1、在在switch语语句句的的每每个个语语句句段段中中都都使使用用break语句语句switch(表达式表达式)case常量表达式常量表达式1:语句段:语句段1;break;case常量表达式常量表达式2:语句段:语句段2;break;.case常量表达式常量表达式n:语句段:语句段n;break;default:语句段语句段n+1;break;switch(表达式表达式)case常量表达式常量表达式1:语句段:语句段1;break;case常量表达式常量表达式2:语句段:语句段2;break;.case常量表达式常量表达式n:语句段:语句段n;break;default:语句段语句段n+1;break;表达式的值表达式的值=常量表达式常量表达式 2 的值的值表表达达式式语句段语句段1语句段语句段2语句段语句段n语句段语句段n+1表达式的值表达式的值=常量表达式常量表达式 1 的值的值表达式的值表达式的值=常量表达式常量表达式 n 的值的值其他其他breakbreakbreakbreakswitch(choice)case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;用用else-if如何实现?如何实现?求解简单表达式求解简单表达式例例3-9输入一个形式如输入一个形式如“操作数操作数运算符运算符操作操作数数”的四则运算表达式,输出运算结果。的四则运算表达式,输出运算结果。(要求用要求用switch语句实现语句实现)例如:例如:输入:输入:3.1+4.8输出:输出:7.9源程序源程序#includeintmain(void)charop;doublevalue1,value2;printf(Typeinanexpression:);scanf(%lf%c%lf,&value1,&op,&value2);switch(op)case+:printf(=%.2fn,value1+value2);break;case-:printf(=%.2fn,value1-value2);break;case*:printf(=%.2fn,value1*value2);break;case/:printf(=%.2fn,value1/value2);break;default:printf(Unknownoperatorn);break;return0;Typeinanexpression:3.1+4.8=7.9如果除数为如果除数为0?2、在、在switch中不使用中不使用breakswitch(表达式表达式)case常量表达式常量表达式1:语句段:语句段1;case常量表达式常量表达式2:语句段:语句段2;.case常量表达式常量表达式n:语句段:语句段n;default:语句段语句段n+1;switch(表达式表达式)case常量表达式常量表达式1:语句段:语句段1;case常量表达式常量表达式2:语句段:语句段2;.case常量表达式常量表达式n:语句段:语句段n;default:语句段语句段n+1;switch(choice)case1:price=3.0;case2:price=2.5;case3:price=4.0;case4:price=3.5;default:price=0.0;表达式的值表达式的值=常量表达式常量表达式 2 的值的值表表达达式式语句段语句段1语句段语句段2语句段语句段n语句段语句段n+1表达式表达式的值的值=常量表达式常量表达式 1 的值的值表达式的值表达式的值=常量表达式常量表达式 n 的值的值其他其他price=?3、在、在switch的某些语句段中使用的某些语句段中使用break例例3-10输输入入10个个字字符符,分分别别统统计计出出其其中中空空格格或回车、数字字符和其他字符的个数。或回车、数字字符和其他字符的个数。比比较较:例例3-7输输入入10个个字字符符,统统计计其其中中英英文文字母、数字字符和其他字符的个数。字母、数字字符和其他字符的个数。intmain(void)intblank,digit,i,other;charch;blank=digit=other=0;printf(Enter10characters:);for(i=1;i=10;i+)ch=getchar();switch(ch)case:casen:blank+;break;case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:digit+;break;default:other+;break;printf(blank=%d,digit=%d,other=%dn,blank,digit,other);return0;Enter10characters:Reold123?blank=1,digit=3,other=63.3.3多分支结构多分支结构n分支结构一般分为二分支和多分支两种结构分支结构一般分为二分支和多分支两种结构n二分支结构用基本的二分支结构用基本的if语句实现语句实现n多分支结构用实现方法:多分支结构用实现方法:elseif语句语句switch语句语句嵌套的嵌套的if-else语句语句嵌套的嵌套的if-else语句语句if(表达式表达式)语句语句1else语句语句2 if语句语句if语句语句if(表达式表达式1)if(表达式表达式2)语句语句1else语句语句2elseif(表达式表达式3)语句语句3else语句语句4嵌套的嵌套的ifelse语句语句if(表达式表达式1)if(表达式表达式2)语句语句1else语句语句2elseif(表达式表达式3)语句语句3else语句语句4表达式表达式1表达式表达式3语句语句4真真假假表达式表达式2语句语句3语句语句1语句语句2真真真真假假假假例例3-11求解简单表达求解简单表达式。要求对除数为式。要求对除数为0的的情况作特别处理。情况作特别处理。#includeintmain(void)doublevalue1,value2;charop;printf(Typeinanexpression:);scanf(%lf%c%lf,&value1,&op,&value2);if(op=+)printf(=%.2fn,value1+value2);elseif(op=-)printf(=%.2fn,value1-value2);elseif(op=*)printf(=%.2fn,value1*value2);elseif(op=/)if(value2!=0)/*嵌套的嵌套的if,判断除数是否为,判断除数是否为0*/printf(=%.2fn,value1/value2);elseprintf(Divisorcannotbe0!n);elseprintf(Unknownoperator!n);return0;Typeinanexpression:3.1+4.8=7.9Typeinanexpression:3.4/0Divisorcannotbe0!else和和if的匹配的匹配if(表达式表达式1)if(表达式表达式2)语句语句1else语句语句2elseif(表达式表达式3)语句语句3else语句语句4if(表达式表达式1)if(表达式表达式2)语句语句1elseif(表达式表达式3)语句语句3else语句语句4else 与最靠近它的、没有与别的与最靠近它的、没有与别的 else 匹配过的匹配过的 if 匹配匹配if(表达式表达式1)if(表达式表达式2)语句语句1elseif(表达式表达式3)语句语句3else语句语句4改变改变else和和if的配对的配对例例3-12改写下列改写下列if语句,使语句,使else和第和第1个个if配对。配对。if(x2)if(x1)y=x+1;elsey=x+2;if(x2)if(x1)y=x+1;elsey=x+2;if(x2)if(x1)y=x+1;else;elsey=x+2;每条语句的执行条件每条语句的执行条件?p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢大家荣幸这一路,与你同行ItS An Honor To Walk With You All The Way演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


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

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


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