




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计基础篇,第 7 章 简单程序设计之二,1,2,2,本章内容提要,多分支选择结构switch语句 循环嵌套 break语句和continue语句 程序举例,2,2,教学目标,在三种基本结构的基础上,结合本章介绍流程控制的其他几个语句:switch语句、break语句和continue语句及循环的嵌套,实现复杂的算法,设计出结构清晰、功能强大的程序,对C语言程序开发设计有比较深刻的认识。,3,2,7.1 多分支选择结构程序设计,1、语句形式:,switch (表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; . case 常量n:
2、语句n; default : 语句n+1; ,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型 或 字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,4,2,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,case语句出 现的次序并 不影响执行 结果。,5,2,void main() int n; printf(请输入成绩:); scanf(%d, ,【例7.1】编写程序,对学生成绩进行等级评定。将成绩分为几个等级:059分为不及格,6069分为及格,7079分为中等,8089分为良好,90100分为优秀。要
3、求输入一个成绩,输出其对应的等级。,请输入成绩:78 成绩78的等级为中等 成绩78的等级为及格 成绩78的等级为不及格,出错啦!?,6,2,在“switch”语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,因此会继续执行所有后面语句的情况。 为此,语言提供了一种break语句,其功能是可以跳出它所在的switch语句。,7,2,将上面的例7.1修改如下:,void main() int n; printf(请输入成绩:); scanf(%d, ,请输入成绩:78 成绩78的等级为中等,8
4、,2,使用switch语句时还应注意以下几点,switch后面圆括号内表达式的值和case语句中常量表达式的值,都必须是整型的、枚举型的或字符型的,不允许是浮点型的。在case后的各常量表达式的值不能相同。 每个case子句既可以是一条语句,也可以是多条语句。当是多条语句时,不需要用花括号括起来。 各个case子句和default子句的先后顺序可以变动,而不会影响程序执行结果。 default子句可以省略不用。 多个case的后面可以共用一组执行语句 。如例7.1中等级为优秀的判断程序可改为:,9,2,switch(int)(n/10) case 10: case 9: printf(成绩%d
5、的等级为优秀n); break; ,10,2,7.2 嵌套循环结构程序设计,在一个循环内又完整地包含另一个循环,称为循环的嵌套。for语句可以与while语句、do-while语句相互嵌套,构成多重循环,例如:,11,2,(1) (2) for() do while() for() while(); (3) (4) while() for() for() for() ,12,2,for (i=1;i=9;i+) 打印第i行; ,【例7.2】打印乘法小九九表。,使用一个循环9次的循环语句,每次循环打印一行:,打印第i行,循环i次,每次循环打印一个表达式:,for (j=1;j=i;j+) 打印第
6、j个表达式; ,打印完一行后换行,13,2,#include void main() int i,j; for (i=1;i=9;i+) for (j=1;j=i;j+) printf(%d*%d=%-3d,i,j,i*j); printf(n); ,程序运行情况如下: 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28
7、7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81,14,2,【例7.3】百鸡问题。,#includestdio.h void main() int x,y,z; for(x=1;x=20;x+) /*用嵌套的for循环依次设公鸡有1,2,20只*/ for(y=1;y=33;y+) /*设母鸡有1,2,33只*/ for (z=3;z100;z+=3) /*设小鸡有3,6
8、,99只*/ if (x*5+y*3+z/3=100 ,程序运行结果如下: 公鸡4只、母鸡18只、小鸡78只 公鸡8只、母鸡11只、小鸡81只 公鸡12只、母鸡4只、小鸡84只,15,2,7.3 break语句和continue语句在循环中的应用,break语句只能用在switch语句或循环语句中,其作用是跳出switch语句或跳出本层循环,转去执行后面的程序。由于break语句的转移方向是明确的,所以不需要语句标号与之配合。break语句的一般形式为 break; 注意: break语句对if-else的条件语句不起作用。 在多层循环中,一个break语句只向外跳一层。 使用break语句可
9、以使循环语句有多个出口,16,2,continue 语句,continue语句只能用在循环体中,其一般格式是: continue; 其语义是:结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行。应注意的是,本语句只结束本层本次的循环,并不跳出循环。 continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。 1) while(表达式1) if(表达式2)break; ,2) while(表达式1) if(表达式2)continue; ,17,2,18,2,【例7.4】输出100以内能被7整除的
10、数。,#include stdio.h void main() int n; for(n=1;n=100;n+) if (n%7!=0) continue; printf(%d ,n); printf(n); ,程序运行情况如下: 7 14 21 28 35 42 49 56 63 70 77 84 91 98,19,2,【例7.5】判断m是否素数,#include #include int main() int m, i, k; scanf(%d, ,20,2,7.4 程序举例 【例7.6】模拟自动饮料机,#include stdio.h void main() int button; pr
11、intf(=自动饮料机=n); printf(1.可口可乐n); printf(2.雪碧n); printf(3.百事可乐n); printf(4.芬达n); printf(5.非常可乐n); printf(请按15键选择饮料:n); scanf(%d,21,2,switch(button) case 1: printf(n你获得一听可口可乐n); break; case 2: printf(n你获得一听雪碧n); break; case 3: printf(n你获得一听百事可乐n); break; case 4: printf(n你获得一听芬达n); break; case 5: print
12、f(n你获得一听非常可乐n); break; default: printf(n非法操作!n); ,程序运行情况如下: =自动饮料机= 1可口可乐 2雪碧 3百事可乐 4芬达 5非常可乐 请按15键选择饮料: 3 你获得一听百事可乐,22,2,【例7.10】数组元素排序冒泡排序(以升序为例),排序过程: 比较第一个数与第二个数,若为逆序a0a1,则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上 对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置 重复上述过程,共经过n-1趟冒泡排序后,
13、排序结束,23,2,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,24,2,#include main() int a10,i,j,t; printf(Input 10 numbers:n); for(i=0;iaj+1) t=aj; aj=aj+1; aj+1=t; printf(The sorted numbers:n); for(i=0;i10;i+) printf(%d ,ai); ,25,2,【例7.11】数组元素排序选择排序(以升序为例),排序过程: 首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数 交换第一趟选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精准播种技术与数字精准农业-洞察阐释
- 2025年陕西省中考历史真题(原卷版)
- 2025年社会心理学与行为科学的考核题及答案
- 云南省曲靖市富源六中2025年高一化学第二学期期末监测模拟试题含解析
- 【小微企业人力资源管理外包的动因分析2400字】
- 【某机场未来年吞吐量计算分析案例1600字】
- 科技创新企业投资信托的股权投资风险控制研究考核试卷
- 智能面料开发考核试卷
- 劳动节安全文化心理建设方法考核试卷
- 计划生育家庭优惠政策宣传咨询指导协议
- 高温施工人员防暑指南
- 上海市重点建设项目社会稳定风险评估报告编制指南2025
- 2025央国企AI+数智化转型研究报告
- 仓储部标签管理制度
- 数字化情报资源管理-洞察阐释
- 电气自动化 霓虹灯广告屏的PLC控制设计
- 穿透式管理模式在建设项目中的应用与探索
- 车库门维修合同范本
- 2025年度事业单位公开招聘考试《综合应用能力(E类)公共卫生管理》试卷真题及解析
- 2025年四川省高考物理试卷真题(含答案)
- 三市耐多药肺结核病患者管理状况剖析与优化策略探究
评论
0/150
提交评论