chap03_分支结构-精品文档资料整理.ppt

上传人:安*** 文档编号:26422331 上传时间:2022-07-17 格式:PPT 页数:52 大小:295.50KB
返回 下载 相关 举报
chap03_分支结构-精品文档资料整理.ppt_第1页
第1页 / 共52页
chap03_分支结构-精品文档资料整理.ppt_第2页
第2页 / 共52页
点击查看更多>>
资源描述

《chap03_分支结构-精品文档资料整理.ppt》由会员分享,可在线阅读,更多相关《chap03_分支结构-精品文档资料整理.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Chap 3 分支结构分支结构3.1 统计输入的一批字符中各类字符的数量统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格查询自动售货机中商品的价格 3.3 分支结构程序设计分支结构程序设计本章要点本章要点n 什么是分支结构?它的作用是什么?什么是分支结构?它的作用是什么?n switch 语句中的语句中的 break 起什么作用?起什么作用?n 逻辑运算和关系运算的相同之处是什么?逻辑运算和关系运算的相同之处是什么?它们之间又有什么不同?它们之间又有什么不同?n 字符型数据在内存中是如何存储的?字符型数据在内存中是如何存储的?3.1 统计输入的一批字符中各类字统计输入的一

2、批字符中各类字符的数量符的数量例例3-1 输入输入10个字符,统计其中英文字母、数个字符,统计其中英文字母、数字字符和其他字符的个数。字字符和其他字符的个数。 3.1.1 程序解析程序解析3.1.2 字符类型字符类型3.1.3 字符数据的输入和输出字符数据的输入和输出 3.1.4 逻辑运算逻辑运算3.1.5 else-if 语句语句3.1.1 程序解析程序解析#include int main(void) int digit, i, letter, other; char ch; digit = letter = other = 0; printf(“Enter 10 characters:

3、); for(i = 1; i = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = 9x=1 关系运算关系运算-1 = x = -1 并且并且 x = -1 & x 1)&(y1) (x1)|(y1) (x1)!(x1) 即即 x= a) & (ch = a & ch = a & ch = A & ch = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = 9) digit +;else other +;假假表达式表达式1表

4、达式表达式2语句语句1语句语句2语句语句n-1语句语句n真真表达式表达式n-1真真假假真真假假假假分段计算水费分段计算水费例例3-3 分段计算水费分段计算水费 004( )01532.510.515xxyf xxxx源程序源程序-分段计算水费分段计算水费# include int main(void) double x, y; printf(Enter x:); scanf(%lf, &x); if (x 0) y = 0; else if (x = 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; printf(f(%.2f) = %.2fn, x, y

5、); return 0;Enter x: -0.5f(-0.50) = 0.00 Enter x: 9.5f(9.50) = 12.67Enter x: 21.3f(21.30) = 42.75004( )01532.510.515xxyf xxxxEnter x: ?n编程练习编程练习 3-33.2 查询自动售货机中商品的价格查询自动售货机中商品的价格 例例3-4 查询自动售货机中商品的价格查询自动售货机中商品的价格3.2.1 程序解析程序解析3.2.2 switch语句语句3.2.1 程序解析程序解析假设自动售货机出售假设自动售货机出售4种商品,薯片种商品,薯片(crisps)、爆米花爆米

6、花(popcorn)、巧克力巧克力(chocolate)和可乐和可乐(cola),售价分售价分别是每份别是每份3.0、2.5、4.0和和3.5元。在屏幕上显示以下菜元。在屏幕上显示以下菜单,用户可以连续查询商品的价格,当查询次数超过单,用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;不到次时,自动退出查询;不到5次时,用户可以选择退出。次时,用户可以选择退出。当用户输入编号当用户输入编号14,显示相应商品的价格;输入,显示相应商品的价格;输入0,退出查询;输入其他编号,显示价格为退出查询;输入其他编号,显示价格为0。1 Select crisps2 Select popcorn

7、 3 Select chocolate4 Select cola 0 Exit#include Int main(void) int choice, i; double price; for( i = 1; i = 5; i+) printf(1 Select crisps n); printf(2 Select popcorn n); printf(3 Select chocolate n); printf(4 Select cola n); printf(0 exit n); printf(Enter choice: ); scanf(%d, &choice); if(choice = 0

8、) break; switch (choice) case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break; printf(price = %0.1fn, price); printf(Thanks n); 1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 1price = 3.

9、01 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 7price = 0.01 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 0Thanks3.2.2 switch语句语句 处理多分支选择问题,处理多分支选择问题,3种情况种情况1、在、在switch语句的每个语句段中都使用语句的每个语句段中都使用break语句语句switch(表达式表达式) case 常量表达

10、式常量表达式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 的值

11、的值表表达达式式语句段语句段1语句段语句段2语句段语句段n语句段语句段n+1表达式的值表达式的值=常量表达式常量表达式 1 的值的值表达式的值表达式的值=常量表达式常量表达式 n 的值的值其他其他breakbreakbreakbreakswitch (choice) case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break;用用else-if 如何实现?如何实现?求解简单表达式求解简单表达式例例

12、3-5 输入一个形式如输入一个形式如“操作数操作数 运算符运算符 操作操作数数”的四则运算表达式,输出运算结果。的四则运算表达式,输出运算结果。例如:例如:输入:输入:3.1+4.8 输出:输出:7.9源程序源程序# include int main(void) char operator; double value1, value2; printf(Type in an expression: ); scanf(%lf%c%lf, &value1, &operator, &value2); switch(operator) case +: printf(=%.2fn, value1+valu

13、e2); break; case -: printf(=%.2fn, value1-value2); break; case *: printf(=%.2fn, value1*value2); break; case /: printf(=%.2fn, value1/value2); break; default: printf(Unknown operatorn); break; return 0;Type in an expression: 3.1+4.8 =7.9如果除数为如果除数为0?2、在、在switch中不使用中不使用breakswitch(表达式表达式) case 常量表达式常量

14、表达式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) case 1: price=3.0; case 2: price=2.5; case 3: price=4.0; case 4: price=3.5;

15、 default: price=0.0;表达式的值表达式的值=常量表达式常量表达式 2 的值的值表表达达式式语句段语句段1语句段语句段2语句段语句段n语句段语句段n+1表达式表达式的值的值= =常量表达式常量表达式 1 的值的值表达式的值表达式的值=常量表达式常量表达式 n 的值的值其他其他price=?3、在、在switch的某些语句段中使用的某些语句段中使用break例例3-6 输入输入10个字符,分别统计出其中空格个字符,分别统计出其中空格或回车、数字和其他字符的个数。或回车、数字和其他字符的个数。例例3-1 输入输入10个字符,统计其中英文字母、数字个字符,统计其中英文字母、数字字符和

16、其他字符的个数。字符和其他字符的个数。int main(void) int blank, digit, i, other; char ch; blank = digit = other = 0; printf(Enter 10 characters: ); for(i = 1; i = 10; i+) ch = getchar(); switch (ch) case : case n: blank +; break; case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : case 6 : case 7 : case 8 : case 9 :

17、 digit +; break; default: other +; break; printf(blank=%d, digit=%d, other=%dn, blank, digit, other); return 0;Enter 10 characters: Reold 123?blank=1, digit=3, other=63.3 分支结构程序设计分支结构程序设计 n分支结构一般分为二分支和多分支两种结构分支结构一般分为二分支和多分支两种结构n用条件语句(用条件语句(if 和和 switch)实现选择实现选择3.3.1 二分支结构和基本的二分支结构和基本的 if 语句语句3.3.2 多

18、分支结构与嵌套的多分支结构与嵌套的 if 语句和语句和switch语语句句3.3.1 二分支结构和基本的二分支结构和基本的 if 语句语句if (表达式表达式) 语句语句1else 语句语句2if (表达式表达式) 语句语句1语句语句1表达式表达式语句语句2真真假假语句语句1表达式表达式真真假假一条语句一条语句判断数字的奇偶性判断数字的奇偶性例例3-7 输入输入1个整数,判断该数是奇数还是偶个整数,判断该数是奇数还是偶数。数。number % 2 = 0源程序源程序-判断数字的奇偶性判断数字的奇偶性#include int main(void) int number; printf(Enter

19、 a number: ); scanf(%d, &number); if(number % 2 = 0) printf(Tne number is even. n); else printf(Tne number is odd. n); return 0;Enter a number: 329 Tne number is odd.Enter a number: 1028Tne number is even.求绝对值求绝对值例例3-8 输入输入1个整数,输出它的绝对值个整数,输出它的绝对值 。当当number = 0时,时,?源程序源程序-求绝对值求绝对值#include int main(vo

20、id) int number; printf(Enter a number: ); scanf(%d, &number); if(number 0) number = -number; printf(The absolute value is %d.n, number); return 0;Enter a number: 10 The absolute value is 10.Enter a number: -300 The absolute value is 300.3.3.2 多分支结构与嵌套的多分支结构与嵌套的 if 语句和语句和switch语句语句多分支结构有多种形式多分支结构有多种形

21、式实现方法实现方法: :n嵌套的嵌套的 if 语句语句 else if 语句语句嵌套的嵌套的 if - else语句语句nswitch语句语句嵌套的嵌套的 if 语句语句if (表达式表达式) 语句语句1else 语句语句2 if 语句语句 if 语句语句o else if 语句语句o 嵌套的嵌套的 if - else语句语句if (表达式表达式1) 语句语句1else if(表达式表达式2) 语句语句2else if(表达式表达式n-1) 语句语句n-1else 语句语句n假假表 达 式表 达 式1表 达 式表 达 式2语句语句1语句语句2语句语句n-1语句语句n真 表达式表达式n-1假假真

22、真 假假假假真 else if 语句语句n个分支需要个分支需要n-1次比较次比较嵌套的嵌套的 if else 语句语句if(表达式表达式1)if(表达式表达式2) 语句语句1else 语句语句2 elseif(表达式表达式3) 语句语句3 else 语句语句4 表达式表达式1表达式表达式3语句语句4真真 假假表达式表达式2语句语句3语句语句1语句语句2真真 真真 假假假假if (x 1) y = x + 1; else if (x 2) y = x + 2;else y = x + 3; if (x 2) if (x 1) y = x + 1; else y = x + 2;else y =

23、x + 3; x2 x1y=x+1y=x+2真真 假假真真 y=x+3假假假假 x1 x2y=x+1y=x+2真真 假假真真 y=x+32种嵌套种嵌套if语句的比较语句的比较else 和和 if 的匹配的匹配if(表达式表达式1)if(表达式表达式2) 语句语句1else 语句语句2 elseif(表达式表达式3) 语句语句3 else 语句语句4 if(表达式表达式1)if(表达式表达式2) 语句语句1 elseif(表达式表达式3) 语句语句3 else 语句语句4 else 与最靠近它的、没有与别的与最靠近它的、没有与别的 else 匹配过的匹配过的 if 匹配匹配if(表达式表达式1)

24、if(表达式表达式2) 语句语句1 elseif(表达式表达式3) 语句语句3 else 语句语句4 改变改变else 和和 if 的配对的配对例例3-10 改写下列改写下列 if 语句,使语句,使 else 和第和第1个个 if 配对。配对。 if (x 2) if (x 1) y = x + 1; else y = x + 2;if (x 2) if (x 1) y = x + 1; else y = x + 2;if (x 2) if (x 1) y = x + 1; else;else y = x + 2;每条语句的执行条件每条语句的执行条件? 习题习题3练习:练习:n3-1n3-2习

25、题习题3-1#include #include int main(void)float a=0,b=0,c=0,s=0,p=0;/p为周长为周长double area=0;/area面积面积printf(Enter a,b,c:);scanf(%f%f%f,&a,&b,&c);if(a+b)c&(a+c)b&(b+c)a) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=%lf,p=%fn,area,2*s);else printf(not triangle!n); return 0;#includeint main(void)f

26、loat s=0.0,tax=0.0,r=0.0;printf(Enter s:);scanf(%f,&s);if(s850) r=0;else if(s1350) r=5; else if(s2850) r=10; else if(sy则将则将x与与y的的值进行交换,值进行交换, 然后再用然后再用x与与z进行比较,如进行比较,如果果xz则将则将x与与z的值进行交换,这样能使的值进行交换,这样能使x最小。最小。 #include main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if (xy)t=x;x=y;y=t; /*交换交换x,y的值的值*/if(xz)t

27、=z;z=x;x=t;/*交换交换x,z的值的值*/if(yz)t=y;y=z;z=t;/*交换交换z,y的值的值*/printf(small to big: %d %d %dn,x,y,z);return 0;题目:输入某年某月某日,判断这题目:输入某年某月某日,判断这一天是这一年的第几天?一天是这一年的第几天?程序分析:以程序分析:以3月月5日为例,应该先把前两个日为例,应该先把前两个月的加起来,然后再加上月的加起来,然后再加上5天即本年的第几天即本年的第几天,特殊情况,闰年且输入月份大于天,特殊情况,闰年且输入月份大于3时需时需考虑多加一天。考虑多加一天。#include main()i

28、nt day,month,year,sum,leap;printf(nplease input year,month,dayn);scanf(%d,%d,%d,&year,&month,&day);switch(month) /*先计算某月以前月份的总天数先计算某月以前月份的总天数*/case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;

29、break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf(data error);break;sum=sum+day; /*再加上某天的天数再加上某天的天数*/ if(year%400=0|(year%4=0&year%100!=0)/*判断是不是判断是不是闰年闰年*/ leap=1; else leap=0;if(leap=1&month2)/*如果是闰年且月份大于如果是闰年且月份大于2,总天数应该加总天数应该加一天一天*/ sum+;printf(It is the %dth day.,sum);return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁