《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构

上传人:E**** 文档编号:89400425 上传时间:2019-05-24 格式:PPT 页数:81 大小:163KB
返回 下载 相关 举报
《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构_第1页
第1页 / 共81页
《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构_第2页
第2页 / 共81页
《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构_第3页
第3页 / 共81页
《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构_第4页
第4页 / 共81页
《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构》由会员分享,可在线阅读,更多相关《《C语言程序设计实用教程》-唐新国-电子教案 第五章 循环结构(81页珍藏版)》请在金锄头文库上搜索。

1、第5章 循环结构,本章学习目标 在程序设计中对a于那些需要重复执行的操作应该采用循环结构完成。利用循环结构处理各类重复操作既简单又方便,循环结构又称重复结构。在C语言中有三种可以构成循环的循环语句,本章将一一进行介绍。通过本章的学习,读者应该掌握以下内容: while语句和用while语句构成的循环结构 do-while语句和用do-while语句构成的循环结构 for 语句和用for语句构成的循环结构 循环结构的嵌套 break和continue语句在循环体中的作用,5.1 while语句和用while语句构成的循环结构,5.1.1 相关知识 循环是一种对同一程序段有规律的重复,被重复执行的

2、部分叫循环体。循环的执行要满足一定的条件(循环条件),循环的终止要达到一定的条件(终止条件)。在程序设计中要注意循环不能永远运行,必须能退出循环。循环结构的特点是:循环体执行与否及其执行次数必须视其类型与条件而定,且必须能在适当的时机退出循环。 C语言提供了while 、do-while、for三种语句实现循环,其中while循环是当型循环,先判断循环条件,再根据条件决定是否执行循环体,执行循环体的最少次数为0。,5.1.2 程序范例 1范例一 程序5-1:求1+2+3+100的值。 这是一个求100个数的累加和问题。加数从1变化到100,可以看到加数是有规律变化的,后一个加数比前一个加数增1

3、,第一个加数为1,最后一个加数为100;因此可以在循环体中使用一个整型变量i,每循环一次使i增1,一直循环到i的值超过100,用这个办法就解决了所需的加数问题;但是要特别注意的是变量i需要有一个正确的初值,这里初值应当设为0。 下一个要解决的是求累加和。设用一个变量sum存放这100个数的和值,可以先求0+1,的和并将其放在sum 中,然后把sum中的数加上2再存放在sum中,依次类推,这和人们的心算过程没有什么区别,sum代表着人们脑中累加的那个和数,不同的是心算过程由人们自己控制。在这里,sum累加的过程要放在循环中,由计算机判断所加的数是否已经超过100,加数则放在变量i中,并在循环过程

4、中每一次增1。 以下就是求累加和的典型算法。,main( ) int i,sum ; i=1; sum=0; /*sum的初值为0*/ while(i=100) /*当i小于或等于100时执行循环体*/ sum=sum+i; i+; /*在循环体中累加一次,i增1*/ printf(“sum=%dn“,sum); ,程序运行后的输出结果: sum =5050 注意: (1)如果在第一次进入循环时,while后圆括号内表达式的值为0,循环一次也不执行。在本程序中,如果i的初值大于100,将使表达式i100时,循环结束。如果没有i+这条语句,则i的值始终不变,循环将无限进行。,(3)在循环体中,语

5、句的先后位置必须符合逻辑,否则将会影响运算结果,例如,若将上例中的while循环体改写成: while (i=100) i+ ; /*先计算i+,后计算sum的值*/ sum=sum+i; 运行后,将输出: sum=5150 运行的过程中,少加了第一项的值1,而多加了最后一项的值101。,2范例二 程序5-2:用/4=1-1/3+1/5-1/7+1/9 -公式求的近似值,直到最后一项的绝对值小于10-4为止。 本题的基本算法也是求累加和,但比例5-1稍为复杂。与例5-1比较,不同的是: (1)用分母来控制循环次数,若用n存放分母的值,则每累加一次n应当增2,每次累加的数不是整数,而是一个实数,

6、因此n应当定义成float类型。 (2)可以看成隔一项的加数是负数,若用t来表示相加的每一项,因此,每加一项之后,t的符号应当改变,这可用交替乘1和-1来实现。,3)从以上求的公式来看,不能决定n的最终值应该是多少;但可以用最后一项t(1/n)的绝对值小于10-4来作为循环的结束条件。 程序如下: #include “math.h“ /*调用fabs函数时要求包含 math.h文件*/ main( ) int s;,float n, t, pi; t=1.0; /*t中存放每项的值,初值为1 */ pi=0; /* pi中存放所求的的值,初值为0*/ n=1.0; /*n中存放每项分母*/ s

7、=1.0; /*s中存放每项分子,其值按公式在1和-1之间变化*/ while ( fabs(t)=1e-4) pi=pi+t;,n+=2.0; s= -s; /*改变符号*/ t=s/n; pi=pi*4; printf(“pi=%fn“,pi); 程序执行后输出以下结果: pi=3.141397,5.1.3 知识归纳 1while循环的一般形式 由while语句构成的循环也称“当”循环,while循环的一般形式如下: while (表达式) 循环体 例如: while (i0)printf(“*“) ; i+ 说明: (1)while是C语言的关键字。 (2)while后一对圆括号中的表达

8、式,可以是C语,言中任意合法的表达式,由它来控制循环体是否执行。 3)在语法上,要求循环体可以是一条简单可执行语句;若循环体内需要多个语句,应该用大括号括起来,组成复合语句。 2while循环的执行过程 (1)计算while后一对圆括号中表达式的值。当值为非零时,执行步骤(2);当值为零时,执行步骤(4)。 (2)执行循环体中语句。 (3)转去执行步骤(1)。 (4)退出while循环。,由以上叙述可知,while后一对圆括号中表达式的值决定了循环体是否执行,因此,进入while循环后,一定要有能使此表达式的值变为0的操作,否则,循环将会无限制地进行下去。 请注意,不要把由if语句构成的选择结

9、构与由while语句构成的循环结构混同起来。若if后条件表达式的值为非零时,其后的if子句只执行一次;而while语句后条件表达式的值为非零时,其后的循环体中的语句将重复执行,而且在设计循环时,通常应在循环体内改变条件表达式中有关变量的值,使条件表达式的值最终变成0,以便能及时退出循环。,5.1.4 实例验证 程序5-3:求输入的某个数是否为素数。若是,输出YES,若不是,输出NO。 素数是指那些大于1,且除了1和它本身以外不能被其他任何数整除的数。如2、3、5、7、11、都是素数;4、6、8、9、则不是素数。 为了判断某数x是否为素数,最简单的方法是用2、3、4、x-1,这些数逐个去除x,看

10、能否除尽,只要能被其中某一个数除尽,x就不是素数;否则,若不能被任何一个数除尽,x就是素数。,实际上只要试除到,就已经可以说明x是否为素数了。这是因为如果小于等于的数都不能除尽x,则大于的数也不可能除尽x。试除到,可以减少循环次数,提高程序的运行效率。 程序代码如下: #include “math.h“ main( ) int i, x, yes, a; printf(“Enter integer number : “); scanf (“%d“,yes=1; i=2; a=(int)sqrt ( (double) x); while( yes ,当x=2时,因i的初值2大于a,while循环

11、根本不执行,yes仍保持为1,输出的素数2;当x2时,进入循环,若x为素数,yes的值不变,仍为1,若x能被2的某个数整除,则x不是素数,使yes的值变为0,并且立即退出循环。退出循环后,if的语句判断yes的值为1时,输出YES,否则输出NO。,3)利用迭代公式再求出一个新的x1值,也就是用新的x0又求出了一个新的平方根值x1,此值将更趋近真正的平方根值。 (4)比较前后两次所求的平方根值x0和x1,若它们之间的误差小于或等于指定的10-5,则认为x1就是a的平方根值,去执行步骤(5);若它们之间的误差大于10-5,则再转去执行步骤(2),即继续循环进行迭代。 (5)输出a的平方根值,程序如

12、下: #include “math.h“ main( ) float a, x0,x1 ; printf(“Input a : “); scanf(“%f“,x1=(x0+a/x0)/2; do x0=x1; x1=(x0+a/x0)/2; while(fabs(x0-x1)1e-5); printf(“sqrt(%f)=%fn“,a,x1); 执行以上程序,给a输入2时,将输出以下结果: sqrt(2.000000)= 1.414214,5.2.3 知识归纳 1do-while语句构成的循环结构 do-while循环结构的形式如下: do 循环体 while(表达式); 例如: do i+;

13、 s+=i; while (i10);,说明: (1)do是C语言的关键字,必须和while联合使用。 (2)do-while循环由do开始,至while结束;必须注意的是:while(表达式)后的“;”不可丢,它表示do-while语句的结束。 (3)while后一对圆括号中的表达式可以是C语言中任意合法的表达式,由它控制循环是否执行。 (4)按语法,在do和while之间的循环体只能是一条可执行语句;若循环体内需要多个语句,应该用大括号括起来,组成复合语句。,2do-while循环的执行过程 (1)执行do后面循环体中的语句。 (2)计算while后一对圆括号中表达式的值。当值为非零时,转

14、去执行步骤(1);当值为零时,执行步骤(3)。 (3)退出do-while循环。 由do-while构成的循环与while循环十分相似,它们之间的重要区别是:while循环控制出现在循环体之前,只有当while后面表达式的值为非零时,才可能执行循环体;在do-while构成的循环中,总是先执行一次循环体,然后再求表达式的值,因此,无论表达式的值是零还是非零,循环体至少执行一次。,和while循环一样,在do-while循环体中,一定要有能使while后表达式的值变为0的操作,否则,循环将会无限制地进行下去。,5.2.4 实例验证 程序5-5:从输入的若干个大于零的正整数中选出最大值。用-1结束

15、输入。 在程序的第一个 do-while循环中,要求输入一个大于零的数或输入一个-1放入x中,不满足此条件时,循环继续不断要求输入一个数,直到满足条件为止。退出do-while循环后,若x中的数为-1,不进入下面的while循环,程序运行结束。若x中的数不是-1,进入下面的while循环。程序中用变量max存放最大值。在while循环中每给变量x读入一个值,就去,断它是否大于0并且大于max,若是,则用新的x值替换max原来的值,否则什么也不做;如此循环,直到读入结束标志(-1)为止。最后输出所求得的最大数。 程序代码如下: main( ) int x , max , i ; printf(“Enter x (-1 to end): “); do scanf(“%d“,while(x0 当输入以下数据时: 4 6 8 12 -9 56 1 2 -1 输出结果如下: max=56,5.3 for语句和用for语句构成的循环结构,5.3.1 相关知识 for语句结构简洁,使用方便,由for语句构成的循环按指定的次数执行循环体,它在循环体中使用一个循环变量,每重复一次后,循环变量的值会自动增加或减少。 5.3.2 程序范例 1范例一 程序5-6:请编写一个程序,计算半径为0.5、1.5、2.5、3.5、4.5、5.5mm时的圆面积。 本例要求计算6个不同半径的圆面

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号