第5章 循环程序设计_第1页
第5章 循环程序设计_第2页
第5章 循环程序设计_第3页
第5章 循环程序设计_第4页
第5章 循环程序设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言编程,发表:计算机应用系统,第五章环路结构编程,本章的主要内容是5.1 while语句5.2 dowhile语句5.3 for语句5.4 break,continue 5.5环路嵌套5.6环路结构程序示例,是键盘吗关于求总成绩的1 2 3 99 100的累积和的第一个问题,在生活中需要反复(循环)校正算法的例子:scanf(“%f”.将此重复100次,输出s的值。 像这样写显然很麻烦。 程序中的scanf(“%f”)意识到这两个词语一直重复,如果能够用一个词语自动地将这两个词语重复执行一百次,就能够简化写入的烦琐,这就是循环语句。 中的组合图层性质变更选项。 所谓循环,就是在某个条件为“

2、真”时反复执行某个块,在条件为“假”时结束循环,从本质上通过基于某个条件的迁移来实现。 所给定的条件一般被称为循环条件,并通过包括一定变量的公式来实现,所述变量被称为循环控制变量,所述重复执行的段一般被称为整个循环,并且还被称为语句组。 循环的执行流程有先判断后执行,或者先执行后判断两种控制方式。 循环结构是结构化编程的三种结构之一。 c语言提供四个循环结构语句: while语句、dowhile语句、for语句和goto语句。 也可以用goto语句构成循环,但由于goto语句的迁移的恣意性,程序的可读性降低,不推荐在结构化编程中任意使用。 1 .设定100个变量,分别输入学生的成绩,进行修订。

3、 这种方法浪费了内存空间,显然不现实。 2 .设置变量,每次输入学生的成绩,累计后输入下一个学生的成绩,如下:5.1 while句子,一般形式:while句子组,1 .修正公式的值,2 .公式的值为非零的情况下执行句子组,转1,否则的双曲馀弦值。 如果表达式的值从头开始为0,则不执行任何语句。 先判断再执行! 不要! 对于类型循环,执行流程如右图所示:循环标头、循环体。 一个句子可以节约。 举个while句子的例子,问题1:以求出学生的平均成绩并输入负成绩为结束。 算法分析: 1 .定义变量score存储学生的成绩,定义s=0存储累积的成绩,定义n=0对输入的成绩数进行纠正。 2 .输入第一个

4、学生的score 3。 如果score=0,则执行步骤4,否则执行步骤7的4. n 5. s=s score 6。 输入以下score,在步骤3的7.n0时输出s/n :浮点s=0、score; 扫描(“% f”,while语句的示例,问题2: 1 2 3 100。 算法分析:代码为: #include void main() int i=1,s=0。 包括/循环首标、循环初始条件while(i=100) /循环首标、循环条件s=s i。 /*环体、复合句*/i; /变更循环控制变量printf(sum=%dn,s )。 代码也可以写成#include void main() int i=10

5、1,s=0。 /循环初始值while(i-) /如果数值表达式I不为0,则循环s=s i; /循环体,实现累加printf(sum=%dn,s ); 代码也可以写成#include void main() int i=0、j=100、s=0 while(i=j) s=s (i ) (j- )。 为什么要减少printf(sum=%dn,s-50): /? 5.2 dowhile语句,一般格式:do语句while (公式); 1 .执行语句,3 .如果表达式的值不为零,则转到步骤1,否则转到4,4 .退出循环。 的双曲馀弦值。 语句至少执行一次。 先执行再判断! 不要! 不要! 到型号周期为止。

6、2 .按一下计算公式值。 其执行流程如右图所示:注意:不能丢失分数。 表达式,#include void main() int n=0; 浮点=0、球形; 使用do scanf(“%f”)、dowhile语句编写程序来校正学生的平均成绩:特别注意n和s可能值的问题,因为do-while语句至少执行一次! 请考虑n1、s-score、n-1、这样的循环语句的执行结果: i=1。 while (i=100) putchar(* ); I; 中的组合图层性质变更选项。 循环控制变量I没有在循环中更改,因此不退出循环。 不属于循环体! 必须变更为:i=1。 while (i=100) putchar(

7、* ); I; 在循环语句中,必须注意,表达式的值在循环执行期间发生更改,以防止出现死循环。 5.3 for循环文,for (表达式1; 式2; 公式3 )循环主体语句,一般形式:1 .修正公式1,通常用于在循环开始前设定变量的初始值。 2 .对公式2进行修正,如果值为0则结束循环,否则执行步骤3。 3 .执行环体语句。 4 .修正式3,转到步骤2。 先判断再执行! 不要! 不要! 不要! 到型号周期为止! 其执行流程如右图所示:例如:求出1 2 100、#include void main() int i、s=0。 for(i=1; i=100; i ) s=s i; 打印机(s=% d,s

8、 ); 解析:用变量I从1循环到99,将I的值与变量s相加,最后输出s的值。 由左边的程序可知,在for语句中,式1 :通常对循环变量赋予初始值的式2 :是否继续执行循环的判别式,该式通常与某个变量的值有关,式的结果随着该变量的值变化而变化的式3 :通常是循环控制变量中的组合图层性质变更选项。 在某些情况下,可以省略for语句的表达式1、2和3,而用其他方法实现这些功能。 使用上面的例子,也对for语句省略表达式的情况进行说明。 1 .省略表达式1:#包括卷主() int I=1,s=0。 福尔(; i=100; i ) s=s i; 打印机(s=% d,s ); 2 .省略表达式3:#包括卷

9、主() int I,s=0。 for(i=1; i=100; s=s i; I; 打印机(s=% d,s ); 3 .同时省略表达式1、3与while等价,#include void main() int i=1,s=0。 福尔(; i=100; s=s i; I; 打印机(s=% d,s ); 也可以省略式2,循环体使用break的语句来实现循环的结束,稍后介绍。 注意:省略公式,不省略分号。for语句的公式可以是所有形式的公式,逗号运算符所涉及的公式可以是for语句,通常应用于公式1和公式3。 在以上的例子中,#include void main() int i,s; for(s=0,i=

10、1; i=100; s=s i,I ); 打印机(s=% d,s ); 请注意这里的分号。 在这里,公式1是逗号形式,给多个变量指派初始值。 式3环体也用逗号式写入。 请注意,公式3的标记顺序是不可交换的。 例:求1/100 2/99 1,分析:用变量I从1开始循环,每次递增1。 用变量j从100开始循环,每次减少1。 将i/j的值累计为s。 以ij结束循环(即以i=j继续循环)。 最后输出s。 程序如下:#包括卷主机() int I,j; 浮点=0; for(i=1,j=100; i=j; I,j- ) s=s (浮点) I/j。 打印机(ns=% f,s ); 在for、while、do-

11、while的比较中,需要循环结构的所有程序都可以使用for、while、do-while中的任意一种来实现。 区别只在于几个问题使用哪个句子比较方便。 例1 :任意输入自然数,按相反顺序输出。 (例如,原稿数123、输出321 )。 分析:此问题不决定循环执行的次数,也不包含规则变化的变量,通常用while或do-while来描述。 另外,为了判断第一次输入是否是自然数,通常用while来实现。算法的步骤输入自然数,将a0代入变量a后执行步骤4,否则执行步骤i=a t=t*10 i a=a/10,返回步骤3的输出t。 程序如下: #includevoidmain() scanf(“%ld”),

12、此处a的值可能较大,因此用于long型定义变量a,如果想取更大的值,则使用unsigned long型。 问:如果a用双精度型,将i=a变更为I=(长) a % 10。 可以把a=a=a/10变更为a=(长) a/10吗? 怎么解决? 例2 .求出有数列2/3、4/5、6/9、10/15这数列的前30项的和。 其修正算法如下:1.初始值i=2、j=3、s=0。 以2.n从1到30的循环3. s=s i/j。 4. c=i; i=j 1; j=c j; 5、输出s; 其中,#include void main() int i=2、j=3、n和c的比例如下: 浮点=0; for(n=1; n=30

13、; 浮动接口,浮动接口。 c=i; i=j 1; j=c j; 打印机(n % f ); 中的组合图层性质变更选项。 此问题的n与循环本体的执行语句没有数值关系,只用于决定循环的执行次数。 分析:关于数列的问题,首先找出通项式,或者前后项的修正算关系式,从式子中求必要。 数列问题一般由执行次数决定,所以用for语句写比较方便。 关于这个问题前后项的关系,后者的分子是前项的分母加1,后者的分母是前项的分子加分母。 解题的想法是用循环语句求各项,加上值。 因为求前30项的和,执行30次循环。 5.4中断、继续、goto语句。 此类语句的功能是将程序从一个位置移动到另一个位置。 goto语句使程序的

14、结构性和可读性变差,要求尽量不使用,所以在此不介绍。 各自的格式为break; 连续; 包括音频主() int s=0,i=1: for (; if (I 100 )中断; s=s i; I; 打印机(s=% d,s ); 另外,例1 :修正上述1 2 100的程序可以同时省略for循环的3个式子,改写成下面的形式:在本程序中,在i100的情况下,以break语句强制结束for循环,继续执行for语句之后的下一语句。 例2 :下面的程序实现了哪些功能?#包括卷主机() int I,s=0。 for(i=1; i=100; I ) if (I %5=0)连续性。 s=s i; 打印机(n % d ); 然后,利用左边的程序,I从1循环到100,当I是5的倍数时,原样进行下一个I,当I不是5的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论