版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 循环结构程序设计 在实际工作中常常会遇到有一定规律的重复性操作: 比如输入若干个学生的成绩,对其求平均值; 又如对若干个数求和等; 许多问题的求解归结为重复执行的操作,重复执行就是循环。 重复工作是计算机特别擅长工作之一。而重复执行,并不是简单地重复,每次重复,操作的数据(状态、条件)都可能发生变化。这就需要用到循环语句。 循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。循环结构的特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。 C语言提供了多种循环语句,可以组成各种不
2、同形式的循环结构: while语句构成的 “当型循环”; do-while语句构成的 “直到型循环”; for语句构成的 “当型循环”; 用goto语句和if语句构成的循环;(仅了解)5.1 while语句(当型循环)语句(当型循环) while语句的一般形式是: while(表达式表达式)语句;语句; 或: while(表达式表达式) 语句序列;语句序列; 其中:表达式称为“循环条件”,语句称为“循环体”。 为便于初学者理解,可以读做“当条件(循环条件)成立(为真),循环执行语句(循环体)”5.1.1 while循环的执行流程循环的执行流程 执行流程是:先计算while后面的表达式的值,如果
3、其值为“真”则执行循环体,在执行完循环体后,再次计算while后面的表达式的值,如果其值为“真”则继续执行循环体,如果表达式的值为假,退出此循环结构。使用while语句需要注意以下几点 while语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。因此,如果表达式的值一开始就为“假”,那么循环体一次也不执行。 当循环体为多个语句组成,必须用 括起来,形成复合语句。 在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。 5.1.2 while循环案例循环案例 【案例5.1】编写程序,计算1+2+3+100的和。 案例分析:这是一个典型的循环结构程序,定义两个整型变
4、量,sum为累加和,i为加数,如果i小于或等于100,返回重新执行累加步骤;否则,循环结束。5.1.2 while循环案例循环案例 【案例5.2】编写程序,输出030间的偶数 案例分析:数据执行输出工作,只需定义1个整型变量i,如果i能被2整除,则将其输出,并返回重新执行循环;否则,循环结束。5.1.2 while循环案例循环案例 【案例5.3】求5个学生某一门课的平均成绩。 案例分析:求平均值,首先要将几个数据累加,设定变量n为计数器,sum为累加器,score为输入成绩变量,循环次数达到5次即能输出结果。5.2 do-while语句(直到型循环)语句(直到型循环) do-while语句的一
5、般形式是: do 语句序列;语句序列; while(表达式表达式); 其中:表达式称为“循环条件”,语句称为“循环体”。 为便于初学者理解,可以读做:“执行语句,当循环条件成立(为真)时,继续循环”。5.2.1 do-while语句的执行流程语句的执行流程 while循环的执行流程是: 执行do后面循环体语句。 计算while后面的表达式的值,如果其值为“真”则继续执行循环体,如果表达式的值为假,退出此循环结构。 说明: do-while循环,总是先执行一次循环体,然后再求表达式的值,因此,无论表达式是否为“真”,循环体至少执行一次。 do-while循环与while循环十分相似,它们的主要区
6、别是:while循环先判断循环条件再执行循环体,循环体可能一次也不执行。do-while循环先执行循环体,再判断循环条件,循环体至少执行一次。 其它:复合语句 ,避免死循环要求同while循环。 5.2.1 do-while语句的执行流程语句的执行流程5.2.2 do-while循环案例循环案例 【案例5.4】利用do-while语句计算1+1/2+1/4+1/50的和。 案例分析:参与运算的数中,除了第一项以外,每一项的分母是递增变化的偶数,可以使用循环语句实现,sum为累加器,i为描述分母变化的变量。 【案例5.5】求n个学生某门课的平均成绩。 案例分析:求平均值,仍然是将几个数据累加,设
7、定变量n为计数器,sum为累加器,score为输入成绩变量,循环次数无特别规定,此时要设定一个终止循环的条件,本题改进了案例5.3的算法,在设定输入值为非负数的情况下,执行循环,否则终止循环。5.2.2 do-while循环案例循环案例5.3 for语句(当型循环)语句(当型循环) for语句的一般形式是: for(表达式表达式1;表达式表达式2;表达式表达式3) 循环体语句循环体语句 for是关键词,其后有3个表达式,各个表达式用“; ”分隔。3个表达式可以是任意的表达式,通常主要用于for循环控制。5.3.1 for循环的执行流程循环的执行流程 for循环执行流程如下: 计算表达式1。 计
8、算表达式2,若其值为非0(循环条件成立),则转3执行循环体;若其值为0(循环条件不成立),则结束循环。 执行循环体。 计算表达式3,然后转2判断循环条件是否成立。 结束循环,执行for循环之后的语句。 5.3.2 for循环案例循环案例 【案例5.6】求正整数n的阶乘n!,其中n由用户输入。 案例分析:由公式n!=1*2*3*4*n分析得出,至少设定三个变量,fact为连乘积,i为参与阶乘的项,n为用户输入的值,也代表循环次数。 【案例5.7】求Fibonacci数列的前20个数。 案例分析:这是一个古典数学中的“兔子数量”问题。这个数列被称为斐波那契数列,它的第一、二个数为1、1,从第三个数
9、开始,每个数是它前面的两个数之和,由此至少设定三个变量,其中f1、f2为数列的前两个数,而变量i表示循环执行的次数,每次执行加法运算后,都要输出两个数,共执行10次,输出前20个数。 5.3.2 for循环案例循环案例5.4几种循环的比较几种循环的比较 从前面的循环结构的语法和例子的介绍,我们可以看出循环结构由4部分组成: 循环变量、条件(状态)的初始化 循环变量、条件(状态)检查,以确认是否进行循环 循环变量、条件(状态)的修改,使循环趋于结束 循环体处理的其它工作。5.4.1 比比 较较C语言中,三种循环结构(不考虑用if/goto构成的循环)都可以用来处理同一个问题,但在具体使用时存在一
10、些细微的差别。如果不考虑可读性,一般情况下它们可以相互代替。 循环变量初始化循环变量初始化:while和do-while循环,循环变量初始化应该在while和do-while语句之前完成;而for循环,循环变量的初始化可以在表达式1中完成。 循环条件循环条件:while和do-while循环只在while后面指定循环条件;而for循环可以在表达式2中指定。 循环变量修改使循环趋向结束循环变量修改使循环趋向结束:while和do-while循环要在循环体内包含使循环趋于结束的操作;for循环可以在表达式3中完成。 for循环可以省略循环体,将部分操作放到表达式2,表达式3中,for语句功能强大。
11、 5.4.1 比比 较较 while和for循环先测试表达式,后执行循环体,而do-while是先执行循环体,再判断表达式。(所以while,for循环是典型的当型循环,而do-while循环可以看作是直到型循环)。 三种基本循环结构一般可以相互替代,不能说哪种更加优越。具体使用哪一种结构依赖于程序的可读性和程序设计者个人偏好。我们应当尽量选择恰当的循环结构,使程序更加容易理解。5.4.1 比比 较较5.4.2 案案 例例 【案例5.8】用三种循环结构实现: 输出80100之间能被3整除的数。5.5 循环的嵌套循环的嵌套 一个循环体内又包含另一个完整的循环结构称为循环的嵌套。内嵌的循环中还可以
12、嵌套循环,这就是多层循环。 三种循环(while循环、do-while循环和for循环)可以互相嵌套。下面几种都是合法的形式1)1)while( ) while( ) while( ) while( ) 2 2) do do do do while( ); while( ); while( ); while( );(3) (3) for(;) for(;) for( ; ; ) for( ; ; ) 4) while( ) dowhile( ); 5) for(;) while( ) 6) do for( ; ; ) while( );案 例 【案例5.9】用for循环结构实现99乘法表的输出
13、。 案例分析:这是一个典型实例,设定两个整型变量i,j,分别代表行数和列数,在行列数不断递增的同时,每一行的乘积也跟这两个变量的变化有关。 【案例5.10】求所有的水仙花数。 案例分析:所谓水仙花数,是一个三位整数,其各位数字的立方和等于该数本身,如153=13+ 53 + 33。案 例5.6 break语句和语句和continue语句语句 5.6.1 释义释义 1.break语句:语句: break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句 一般形式: break ; 注意:break语句不能用于循环语句和switch语句之外的任何其他语句中。 5.6.1 释义
14、释义 2.continue语句语句 作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定. 一般形式: continue ;5.6.2 二者的区别二者的区别 continue语句和break语句的区别: continue语句只结束本次循环,意为:继续下次循环,而不是终止整个循环的执行。 while(表达式表达式1) for if(表达式表达式2) continue; break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。 while(表达式表达式1) for if(表达式表达式2) break; 5.6.2 二者的区别二者的区别案例 【案例5.11】计算半径从1到10时圆的面积,直到面积大于100为止(break语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区医生培训
- 交通事故协商赔偿协议书3篇
- 神内科护理疑难病例
- 端午节音乐活动教案
- 河南科技大学《日语中级听力》2021-2022学年第一学期期末试卷
- 2024版工程建筑外架施工安全合同2篇
- 花家湖学校年度办公用品购货合同
- 2024年装载机买卖合同技术更新服务合同2篇
- 女方哺乳期2024年离婚协议书参考
- 《抗菌药物合理运用》课件
- 国投集团笔试测评题
- (高清版)DZT 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼
- 2023年凉山州木里藏族自治县考试招聘事业单位工作人员考试真题及答案
- 六西格玛项目定义
- 职业生涯规划主题班会1
- 【川教版】《生态 生命 安全》四年级上册第10课《认识传染病》课件
- DB35T 2061-2022 村庄规划编制规程
- 创新实践组织创新成功的案例分享
- 谈谈改革开放四十多年我的家乡的变化
- 2024年上海中考语文记叙文阅读专题一写人记事散文(原卷版 +解析版)
- 监理工作中变更管理的规范与应对措施
评论
0/150
提交评论