




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Chap 3 分支结构3.1 统计输入的一批字符中各类字符的数量 3.2 查询自动售货机中商品的价格 3.3 分支结构程序设计本章要点 什么是分支结构?它的作用是什么? switch 语句中的 break 起什么作用? 逻辑运算和关系运算的相同之处是什么?它们之间又有什么不同? 字符型数据在内存中是如何存储的?3.1 统计输入的一批字符中各类字符的数量例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 m
2、ain(void) int digit, i, letter, other; char ch; digit = letter = other = 0; printf(“Enter 10 characters: ); 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 =
3、 A & ch = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = 9) digit +;else other +;假表达式1表达式2语句1语句2语句n-1语句n真表达式n-1真假真假假分段计算水费例3-3 分段计算水费 源程序-分段计算水费# 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; prin
4、tf(f(%.2f) = %.2fn, x, y); return 0;Enter x: -0.5f(-0.50) = 0.00 Enter x: 9.5f(9.50) = 12.67Enter x: 21.3f(21.30) = 42.75Enter x: ?编程练习 3-33.2 查询自动售货机中商品的价格 例3-4 查询自动售货机中商品的价格3.2.1 程序解析3.2.2 switch语句3.2.1 程序解析假设自动售货机出售4种商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),售价分别是每份3.0、2.5、4.0和3.5元。在屏幕上显
5、示以下菜单,用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。当用户输入编号14,显示相应商品的价格;输入0,退出查询;输入其他编号,显示价格为0。1 Select crisps2 Select popcorn 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); pri
6、ntf(3 Select chocolate n); printf(4 Select cola n); printf(0 exit n); printf(Enter choice: ); scanf(%d, &choice); if(choice = 0) 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
7、.1fn, price); printf(Thanks n); 1 Select crisps2 Select popcorn 3 Select chocolate4 Select cola 0 ExitEnter choice: 1price = 3.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
8、choice: 0Thanks3.2.2 switch语句 处理多分支选择问题,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 ; br
9、eak;表达式的值=常量表达式 2 的值表达式语句段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 如何实现?求解简单表达式例3-5 输入一个形式如“操作数 运算符 操作数”的四则运算表达式,输出运算
10、结果。例如:输入: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+value2); break; case -: printf(=%.2fn, value1-value2); break; case *: printf(=%.2fn,
11、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 常量表达式1:语句段1; case 常量表达式2:语句段2; . case 常量表达式n:语句段n; default : 语句段n+1;switch(表达式) case 常量表达式1:语句段1; case
12、 常量表达式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; default: price=0.0;表达式的值=常量表达式 2 的值表达式语句段1语句段2语句段n语句段n+1表达式的值=常量表达式 1 的值表达式的值=常量表达式 n 的值其他price=?3、在switch的某些语句段中使用break例3-6 输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。
13、例3-1 输入10个字符,统计其中英文字母、数字字符和其他字符的个数。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 : c
14、ase 8 : case 9 : 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 分支结构程序设计 分支结构一般分为二分支和多分支两种结构用条件语句(if 和 switch)实现选择3.3.1 二分支结构和基本的 if 语句3.3.2 多分支结构与嵌套的 if 语句和switch语句3.3.1 二分支结构和
15、基本的 if 语句if (表达式) 语句1else 语句2if (表达式) 语句1语句1表达式语句2真假语句1表达式真假一条语句判断数字的奇偶性例3-7 输入1个整数,判断该数是奇数还是偶数。number % 2 = 0源程序-判断数字的奇偶性#include int main(void) int number; printf(Enter a number: ); scanf(%d, &number); if(number % 2 = 0) printf(Tne number is even. n); else printf(Tne number is odd. n); return 0;En
16、ter a number: 329 Tne number is odd.Enter a number: 1028Tne number is even.求绝对值例3-8 输入1个整数,输出它的绝对值 。当number = 0时,?源程序-求绝对值#include int main(void) 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 numb
17、er: 10 The absolute value is 10.Enter a number: -300 The absolute value is 300.3.3.2 多分支结构与嵌套的 if 语句和switch语句多分支结构有多种形式实现方法:嵌套的 if 语句 else if 语句嵌套的 if - else语句switch语句嵌套的 if 语句if (表达式) 语句1else 语句2 if 语句 if 语句 else if 语句 嵌套的 if - else语句if (表达式1) 语句1else if(表达式2) 语句2else if(表达式n-1) 语句n-1else 语句n假表达式1表
18、达式2语句1语句2语句n-1语句n真 表达式n-1假真 假假真 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 = x + 3; x2 x1y=x+1y=x+2真 假真 y=x+
19、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)if(表达式2) 语句1 elseif(表达式3) 语句3 else 语句4 改变else 和 if 的配对例3-10 改写下列 if 语句,使 else 和第1个 if 配对。 if (x 2) if (x
20、 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练习:3-13-2习题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)
21、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)float 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=z;z=x;x=t;/*交换x,z的值*/if(yz)t=y;y=z;z=t;/*交换z,y的值*/printf(small to big: %d %d %dn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新生儿简易胎龄评估法
- Cephaibol-D-生命科学试剂-MCE
- 动保行业4月跟踪报告:4月圆环、伪狂、腹泻等疫苗批签发增速突出大环内酯类原料药延续强势表现
- A股市场2025年6月投资策略报告:震荡行情静待增量催化
- 2025年绿色建筑示范项目资金申请与绿色建筑产业政策优化报告
- 2025年工业互联网平台安全多方计算在智能工厂生产设备状态实时监控与报警中的应用报告
- 2025年高端医疗器械国产化替代下的产业政策与环境适应性研究报告
- 2025年文化与科技融合趋势下的数字文创产业政策研究报告
- 数字化转型背景下的商业地产项目运营策略与客户体验优化报告
- 2025年潮玩产业分析:收藏价值与文化推广策略研究报告
- 工商业用户安全用气培训课件
- 产品方案技术白皮书模板(含系统架构说明书)
- 能源动力类能源与动力工程专业
- 橡胶与人类-青岛科技大学中国大学mooc课后章节答案期末考试题库2023年
- 福建省漳州实小教育集团2023届数学三下期末检测模拟试题含解析
- 有效沟通-报联商课件
- 航行通告教学课件
- 星巴克劳动合同
- 《电子技术基础》期末考试复习(重点)题库(含答案)
- 结缔组织病的肺部表现
- 景观工程施工图设计总说明
评论
0/150
提交评论