版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章是循环结构的程序设计,5.1是概述。序列结构和选择结构已经介绍过了,本章介绍了循环结构。如:总和=1 2 3 100;实际问题:一组重复的语句。它是通过圆形结构解决的。c语言使用四种形式的循环。do-while语句,3。声明4。break,continue and goto语句,1。在C语言中广泛使用的While语句,即5.2 while语句,通过判断循环控制条件是否满足来决定是否继续循环,也称为“时类型”循环。形式为: while(表达式)循环语句。2.首先执行过程:来判断表达式的值。如果为0。在它之后执行语句;否则,在执行完成时。一个特殊的等价循环语句while语句,3。流程图:当(
2、i=100)和=i时,用while语句编写上述示例;我;该语句应该具有表达式=0。否则,将会有一个无限循环。注意: while后面的while语句一般是复合语句,即加法。让我们看下面的例子:5.1写一个程序,输入一个班级的学生成绩,并求全班的平均成绩。分析:输入分数和计算平均分数都是重复的过程,所以可以通过循环语句来实现。在这里,我们不知道有多少学生,也就是说,我们不知道有多少次循环,但考虑到没有负的分数,我们可以设置如下的循环条件:每当输入分数大于或等于0时,继续输入分数;当输入分数小于0时停止输入。解决问题的步骤如下:(1)输入分数(2)当“分数=0”时,做以下工作:累计总分;数字加1。输
3、入下一个分数;(3)重复步骤(2),直到得分为0。程序:# includemain()浮点核心,平均值=0;/*average存储平均分数,初始值为0 */且int n=0;/*n用于存储学生人数。初始值为0*/scanf(%f,/*输入下一个学生的分数*/,如果(n!=0)平均值=平均值/n;/*平均分数,平均值*/printf(%6.2f,平均值);/*输出平均分数,保留两位小数*/当使用while语句时,我们应该注意以下两个问题:(1)如果循环体包含多个语句,应该用花括号括起来,并以复合语句的形式出现。如果没有花括号,while语句的作用域只能到达while之后的第一个分号。例如,在上面
4、的例子中,如果while语句中没有花括号,那么while语句的作用域只有“average=score”。(2)在循环体中应该有语句使循环趋于结束。例如,在上面的例子中,循环结束的条件是“分数=0”,所以当我们输入这个类的所有等级时,我们必须输入一个负数才能执行程序。(3)循环语句不能执行一次。例如,在上面的例子中,当第一次输入的分数为负时,循环将不会执行一次。5.3 do while语句,do-while语句的特点是:首先执行循环体中的语句,然后判断表达式的值来决定是否继续循环,循环条件的测试在循环结束时进行。这是一个特殊的“直到-类型”循环语句。它的一般形式是: do loop语句while
5、(表达式);3。过程:对于示例5.1,用do-while语句编写程序如下:#包括主()浮点分数,平均值=0;int n=0;做/*不做判断,首先进入循环*/扫描f(%f,/*输入学生的分数*/,如果(分数=0)平均=分数;n;而(得分=0);/*如果表达式不是0,继续*/如果(n!=0)平均值/=n;/*平均分数,平均值*/printf(%6.2f,平均值);/*输出平均分数,保留两个小数位*/,例如,程序5.2找到1 3 5 7 9等数字的总和。如果累计数大于750,程序终止并输出结果。main() int i=1,sum=0;而(sum=750)sum=sum I;I=I 2;printf
6、(n%d,总和);在示例5.3中,使用do-while语句查找满足“2除3、3除5和2除7”的1到1000之间的数字,并且一行中只打印五个数字。分析:确定一个数被另一个数除,并使用模运算。这三个条件是“和”的关系。一行可以打印五个数字,可以通过数到五然后输入新的一行来包装。程序代码如下:#include main() int i=1,j=0;如果(i%3=2,请执行此操作注:1。do-while语句的循环体语句应该至少执行一次,因为它在进入循环后区分表达式。While语句首先区分表达式。如果表达式值为0,则不会执行一次。2.必须在循环体中更改循环控制变量,以便while和do-while语句的
7、循环控制条件表达式的值可以连续更改,直到循环结束。否则,它将导致无限循环。例如:I=1;而(I=100)put char(*);我;这个循环永远不会结束,因为“我”该语句不属于循环体中的语句,循环控制变量I在循环体中不变。该程序应更改如下:I=1;而(I=100)put char(*);我;执行这个循环语句的结果是输出100 * 。您也可以将其转换为do-while语句:I=1;do put char(*);我;而(I=100);如您所见,对于同一个问题,您可以使用while语句或do-while语句。那么,它们之间有什么区别呢?while语句和dowhile语句的区别:第一次执行时,如果表达
8、式=0,while语句与do while语句不同,do while只执行下面的语句一次,而不执行。5.3对于语句,1。一般形式,首先计算表达式1,然后执行表达式2,如果表达式2的值为0,执行语句,然后计算表达式3,然后判断表达式2的值。重复此操作,直到表达式2的值为0(假)。for语句是C语言中最有特色的循环语句,它使用起来最灵活、最方便。用于(表达式1;表达式2;表达式3)循环语句,2。进程:计算表达式1,查找表达式2的值,语句,计算表达式3,=0(假),0(真),2。首先执行过程(1)求解表达式1。(2)求解表达式2。如果其值为真(该值不是0),则执行for语句中指定的循环语句,然后执行以
9、下步骤(3)。如果为假(值为0),结束循环并转到步骤(5)。(3)求解表达式3。(4)返回上述步骤(2)并继续执行。(5)循环结束后,执行for语句下面的语句。用for语句编写上述示例,并使用process表达式1代替while for而(表达式2)语句表达式3;对于(I=1;i=100I)sum=I;for语句可以完全由while代替,但for是直观、简单和方便的。for语句中每个表达式的含义(1)表达式1:初始值表达式,用于在循环开始前设置循环变量的初始值。(2)表达式2:循环控制逻辑表达式,它控制循环执行的条件并确定循环的数量。(3)表达式3:循环控制变量的修改表达式定义了一次循环控制变
10、量的变化。注意:表达式1、表达式2和表达式3必须用分号分隔。只要条件为真,for循环将始终执行。一旦条件变为假,程序将从紧接着for循环的语句重新启动。循环语句:重复执行的语句。下面通过一个例子来看for语句的执行过程。示例5.4在屏幕上打印从1到100的数字。当然,我们可以使用100个printf语句来解决这个问题,但是当要打印的数量很大时,显然不适合使用这个方法,我们可以使用for循环语句来实现它。程序如下:# include main()int x;对于(x=1;x=100x ) printf(%d,x);在这个程序中,x被初始化为1,因为x小于100,调用printf语句x 1并测试x
11、,看它是否仍然小于或等于100。重复这个过程,直到x大于100,循环结束。在本例中,x是循环控制变量:每次循环重复时,x都会改变,并检查x。例5.5程序计算s=1 2 3 100分析:这个问题可以用循环语句编程,循环控制变量I从1增加到100。假设s的初始值为0,则循环体为:s=s I;/*i=l,2,100*/程序:#include main() int s0,I;for(il;i100I)s=s I;/* loop语句*/printf(s%d,s);在上面的程序中,for语句的执行过程是:计算表达式1“il;获取回路控制变量的初始值;求解表达式2,如果表达式2的值为零(当x100时),结束
12、for循环;执行循环体语句“ss I;解表达式3,“我”,然后转到步骤。对于For循环,非常重要的是条件测试总是在循环开始时执行。如果在循环开始时条件为假,循环语句将不会执行。例如,int i=10对于(k=10k!=i。k ) printf(%d,k);printf(%d,k);在这个循环程序段中,在循环的开始,因为i=k,它根本不会被执行。正是因为条件表达式为假,循环语句和循环的增量部分将不会被执行。因此,k总是10,最后屏幕上输出的数字也是10。写一个程序来计算s=1-3 5-7-99 101。这个例子也可以看作是数字的累加,但它与上面的例子略有不同,即相加的数字是一个正一个负。程序代码
13、如下:#包括main() int i,t=1,s=0;对于(I=1;i=101I=2)t=t * I;s=s t;t=(-t)/I;/*正1,负1交叉*/printf(%dn,s);for语句和while语句之间的比较for语句等效于以下语句序列:表达式1;而(表达式2)语句;表达式3;相比之下,for语句简洁明了。1.表达式的省略号如果在for语句之前将初始值赋给循环变量,则表达式1可以省略,但其后的分号不能省略。例如5.2,循环语句可以写成如下形式:I=1;/*将初始值赋给for语句*/for()之前的循环变量;i100I)s=s I;如果省略表达式3,应该在for语句的循环体中修改循环控制变量。例如:for(i1;i100)ss I;我;/*修改循环控制变量*/。如果省略了表达式1和表达式3,则for语句等同于while语句。例如:il。/*在for语句* /*for()之前,将初始值赋给循环变量;i100)ss I;我;/*修改回路控制变量*/,相当于:I=1;而(I=100)s=s I;我;如果这三个表达式都被省略,则for是一个没有循环终止条件的循环,因此有可能形成一个无限循环,如下例所示:)(我将永远奔跑。实际上,对于(;)语句不能保证
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淄博市城市水务市场:管理困境剖析与改革路径探寻
- 液相合成低维纳米结构材料:方法、机理与应用探索
- 液压管系循环冲洗技术:原理、应用与创新发展
- 润滑油添加剂微量成分的精准识别与高效检测技术探究
- 消防车辆定位系统:关键技术、设计实现与效能优化
- 项目评估与招商政策手册-1
- 个性化自建房顶棚安装协议合同三篇
- 妊娠期血液透析患者的容量管理数据化管理
- 妊娠期结核病合并妊娠期胎儿窘迫的胎心监护变异减速
- 2026临汾市中考地理查缺补漏专练含答案
- 消除艾梅乙工作专班制度汇编手册修订版艾滋病梅毒乙肝
- 医疗设备试用的协议书
- 乳腺腔镜手术科普
- 面密度仪设备原理培训课件
- OPC通讯DCOM配置手册
- 风电场项目升压站施工测量施工方案与技术措施
- 北师大新版八年级下册数学前三章复习培优题
- 主港潮汐的查取与计算
- 国开农业生态学形考任务阶段作业1-4答案
- 某中学图书馆电气设计毕业设计论文
- GB/T 34042-2017在线分析仪器系统通用规范
评论
0/150
提交评论