C语言程序设计教程第5章循环程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计教程第5章循环程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 教程 循环 程序设计 课件
- 资源描述:
-
1、5.1 循环结构循环结构 循环结构循环结构的特点:在给定条件成立时,反复的特点:在给定条件成立时,反复执行某程序段,直到条件不成立为止。执行某程序段,直到条件不成立为止。注意两个概念:注意两个概念:1 1、循环条件给定的条件称为、循环条件给定的条件称为循环条件循环条件 2 2、循环体反复执行的程序段称为、循环体反复执行的程序段称为循环循环 体体 在在C语言中,实现循环结构的语句主要有语言中,实现循环结构的语句主要有3种:种:5.1 循环结构循环结构for语句语句while语句语句doWhile语句语句5.1.2 for5.1.2 for循环语句循环语句 for语句是语言所提供语句是语言所提供的
2、功能更强,使用更广泛的的功能更强,使用更广泛的一种循环语句。一种循环语句。5.1 循环结构循环结构表达式2表达式1语句表达式3零零非零非零 for(表达式表达式1;表达式;表达式2;表达;表达3)语句;语句;(1)当循环体语句组仅由一条语句构成时,可以不使当循环体语句组仅由一条语句构成时,可以不使用复合语句形式,如:用复合语句形式,如:for(i=1;i=100;i+)*psum+=i;(2)对于表达式对于表达式1,既可以是给循环变量赋初值的简,既可以是给循环变量赋初值的简单表达式,也可以是其它表达式单表达式,也可以是其它表达式(如逗号表达式如逗号表达式),如:,如:for(*psum=0,i
3、=1;i0;(*pn)-,a+)printf(%d,a*2);5.1 循环结构循环结构5.1 循环结构循环结构b.如果省略表达式如果省略表达式2,相当于第二个表达式,相当于第二个表达式的值是的值是1,即循环继续的条件一直成立,这,即循环继续的条件一直成立,这时可能造成无限循环时可能造成无限循环(俗称死循环俗称死循环),那么应,那么应在其它位置设法结束循环(在其它位置设法结束循环(5.2节将介绍),节将介绍),下面就是一个死循环的例子:下面就是一个死循环的例子:for(;(*pn)-,a+)printf(%d,a*2);c.可以省略表达式可以省略表达式3,这时可由循环体内的,这时可由循环体内的语
4、句进行对循环变量的调整,以控制循环次语句进行对循环变量的调整,以控制循环次数。如:数。如:for(;*pn0;)a+;5.1 循环结构循环结构(*pn)-;printf(%d,a*2);d.循环体也可以是空语句,称为空循环。循环体也可以是空语句,称为空循环。如下面的程序段能实现计算从键盘输入的如下面的程序段能实现计算从键盘输入的字符数:字符数:intn=0;for(;getchar()!=n;n+);/*循环体为循环体为空空*/空循环有时可被用来产生延时,如:空循环有时可被用来产生延时,如:intt,time=10000;for(t=0;ttime;t+);表达式表达式1(控制变量的初始化(控
5、制变量的初始化):):给循给循环变量赋初值环变量赋初值,也允许在也允许在for语句外给循环语句外给循环变量赋初值,此时可以省略该表达式。变量赋初值,此时可以省略该表达式。表达式表达式2(循环条件)(循环条件):一般为关系或一般为关系或逻辑表达式。逻辑表达式。表达式表达式3通常可用来修改循环变量的值,通常可用来修改循环变量的值,一般是赋值语句。一般是赋值语句。5.1 循环结构循环结构 1.计算表达式计算表达式1的值。的值。2.计算表达式计算表达式2的值,若的值,若值为真值为真(非非0)则执行循环体一则执行循环体一次,否则跳出循环。次,否则跳出循环。3.然后再计算表达式然后再计算表达式3的的值,转
6、回第值,转回第2步重复执行。步重复执行。表达式2语句非00语句求解表达式1求解表达式3for 语句的执行过程语句的执行过程for语句的执行过程:语句的执行过程:5.1 循环结构循环结构 在整个在整个for循环过程中,表达循环过程中,表达式式1只计算一次。只计算一次。表达式表达式2和表达式和表达式3则可能计则可能计算多次。算多次。循环体可能多次执行,也可循环体可能多次执行,也可能一次都不执行。能一次都不执行。5.1 循环结构循环结构表达式2语句非00语句求解表达式1求解表达式3for 语句的执行过程语句的执行过程#include“stdio.h“main()inti,sum=0;int*psum
7、=∑for(i=1;i=100;i+)*psum+=I;printf(“1+2+100=%dn“,*psum);例:例:求求1100的累加和的累加和.(用指针完成用指针完成).5.1 循环结构循环结构/*将累加器将累加器sum初始化为初始化为0*/*指针变量指针变量psum来指向来指向sum,并将其初始化并将其初始化*/*实现累加实现累加*/5.1 循环结构循环结构例例:一个球从一个球从100米高度自由落下,每次落地后反跳米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在第回原高度的一半再落下,求它在第10次落地次落地时,共经过多少米?第时,共经过多少米?第10次反弹多高?次反
8、弹多高?开始开始定义:反弹次数定义:反弹次数i,经过的,经过的距离距离length=100,每次反弹每次反弹高度高度nheight=length/2i=2i=10 i+length+=nheight*2,nheight=nheight/2输出输出length、nheight结束结束5.1 循环结构循环结构#include“stdio.h“main()floatlength=100,nheight;inti;nheight=length/2;for(i=2;i=0):);scanf(%d,&n);t=1.0;/*给变量给变量t赋初值赋初值*/for(i=1;i=n;i+)t=t*i;printf
9、(%d!=%fn,n,t);例例.使用使用for循环语句求循环语句求n!n!5.1 循环结构循环结构3.4.1 while3.4.1 while语句语句 执行过程执行过程是:计算表达式的值,当值为真是:计算表达式的值,当值为真(非非0)时,时,执执行循环体语句。行循环体语句。while语句的一般形式为:语句的一般形式为:while(表达式表达式)语句;语句;其中表达式是循环条件,语其中表达式是循环条件,语句为循环体,若是多个语句则必句为循环体,若是多个语句则必须用须用 组成复合语句组成复合语句。表达式语句非005.1 循环结构循环结构 计算计算的值,若表达式的值为真的值,若表达式的值为真(非非
10、0)时,则执行时,则执行循环体语句;不断反复,直到表达式的值为假循环体语句;不断反复,直到表达式的值为假(0),则不执行,则不执行循环体语句,而直接转向循环体外的第一条语句。循环体语句,而直接转向循环体外的第一条语句。是循环反复执行的程序,称为是循环反复执行的程序,称为“循环体循环体”,当当需要执行多条语句时,应使用需要执行多条语句时,应使用“”括起来组成一个复合语句。括起来组成一个复合语句。while语句语句是先判断条件,后执行循环体,为是先判断条件,后执行循环体,为“当当型型”循环,因此若条件不成立,有可能一次也不执行循环体。循环,因此若条件不成立,有可能一次也不执行循环体。一般情况下,一
11、般情况下,whilewhile型循环最适合于这种情况型循环最适合于这种情况:知道控制知道控制循环的条件为某个逻辑表达式的值循环的条件为某个逻辑表达式的值,而且该表达式的值而且该表达式的值会在循环中被改变。会在循环中被改变。说明:说明:3.4 循环结构循环结构例:例:求求1100的累计和。的累计和。main()int s sum=0,i=1;while (n=100)s sum=s sum+i+i;n+;printf(S=%d,sum);这句不能缺少这句不能缺少数据初始化:数据初始化:求和变量和求和变量和计数变量一计数变量一般赋般赋0,求积,求积变量一般赋变量一般赋13.4 循环结构循环结构ma
12、in()intn=0;printf(Inputastring:n);while(getchar()!=n)n+;printf(Thenumberofinputcharactersis%d.n,n);例例:统计从键盘输入的一行字符的个数。统计从键盘输入的一行字符的个数。3.4 循环结构循环结构/*输入字符的同时判输入字符的同时判断其是否为换行符断其是否为换行符*/3.4.2 do.while3.4.2 do.while语句语句 do-while语句的一般形式为:语句的一般形式为:do 语句;语句;while(表达式表达式);其中:语句是循环体,其中:语句是循环体,表达式是循环条件。表达式是循环条
13、件。表达式语句非00 执行过程是执行过程是:先执行循环体语句一次,先执行循环体语句一次,再判别表达式的再判别表达式的值,若为真值,若为真(非非0)则继续循环,否则终止循环。则继续循环,否则终止循环。3.4 循环结构循环结构例:例:求解求解10!main()inti=1;longfact=1;dofact*=i;i+;while(i1e-5);printf(方程方程2x3-4x2+3x-6=0的根为的根为:x=%fn,x1);3.4 循环结构循环结构/*练习指针的使用:指针练习指针的使用:指针pdiff指向变量指向变量diff*/*设解的初值为设解的初值为x=1.5*/5.1 5.1 三种循环语
14、句比较三种循环语句比较 for()while()do .while();循循环环类类型型 当当型型循循环环 当当型型循循环环 直直到到循循环环 循循环环控控制制条条件件 表表达达式式 2 值值非非 0 表表达达式式值值非非 0 表表达达式式值值非非 0 循循环环变变量量初初值值 在在 for 语语句句行行中中 在在 while 之之前前 在在 do 之之前前 使使循循环环结结束束 表表达达式式 3 循循环环体体中中使使用用专专门门语语句句 循循环环体体中中使使用用专专门门语语句句 5.1 循环结构循环结构5.2break语句与语句与continue语句语句5.2.1 break5.2.1 br
15、eak语句语句形式形式break;说明说明跳出跳出switch语句语句跳出本层循环语句跳出本层循环语句如果有多层循环存在如果有多层循环存在,break只跳出它所只跳出它所在的那一层循环语句,不影响外层循环的执在的那一层循环语句,不影响外层循环的执行行不能用于循环语句和不能用于循环语句和switch语句之外的语句之外的任何其他场合任何其他场合5.2break语句与语句与continue语句语句5.2.1 5.2.1 continue语句形式continue;continue;说明结束本次循环跳过循环体中余下的其他语句,接着进行下一次循环的判定只能用于循环语句中5.2break语句与语句与cont
16、inue语句语句 break语句 跳出本层本层循环 while(i100)break;.continue语句 结束本次本次循环 while(i100)continue;.5.2break语句与语句与continue语句语句例例:对于表达式对于表达式s=1+2+3+n,s=1+2+3+n,求满足求满足s100s100的的n n最小值。最小值。main()main()intint s=0,i=1;s=0,i=1;dodo s+=i;s+=i;ifif(s(s100)100)breakbreak;i+;i+;whilewhile(1);(1);printfprintf(“(“满足满足s=1+2+3+
17、n 100s=1+2+3+n 100的最小的的最小的n n是是%dn,idn,i););开始开始定义定义:自然数自然数i=1和和s=0s=100i+YN输出输出i结束结束s+=i5.2break语句与语句与continue语句语句main()main()intint n;n;printfprintf(“100(“100以内能被以内能被7 7整除整除的自然数有:的自然数有:n);n);forfor(n(n=7;n=100;n+)=7;n=100;n+)ifif(n%7!=0)(n%7!=0)continuecontinue;printfprintf(%d,n);(%d,n);printfprin
18、tf(“n“);(“n“);例:输出100以内能被7整除的自然数。开始开始定义定义:自然数自然数n=7n=100n+YN输出输出n结束结束n%7=0YN5.2break语句与语句与continue语句语句main()int n;printf(100以内能被7整除的自然数有:n);for(n=7;n=100;n+=7)printf(%d,n);printf(“n“);练习for语句实现开始开始定义定义:自然数自然数n=7n=100n=n+7N输出输出n结束结束Y.3.5.3.5 循环的嵌套循环的嵌套 一个循环体内又包含另一个完整的循环一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的
19、循环中结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,称为还可以嵌套循环,称为多层循环多层循环。三种循环(三种循环(while循环、循环、do-while循环循环和和for循环)可以互相嵌套。循环)可以互相嵌套。以下是合法的嵌套形式:以下是合法的嵌套形式:while()while()dodowhile();while();for(;)for(;)while()dowhile();for(;)while()dofor(;)while();合法的嵌套形式:合法的嵌套形式:5.3循环的嵌套循环的嵌套若要输出如下共3行、每行有5个*的图案:*int i,j;for(i=0;i=3;i+)for(j=
20、0;j=4;j+)printf(“*“);printf(“n“);int i,j;for(i=0;i=3;i+)for(j=0;j2*i+1;j+)printf(“*“);printf(“n“);*如改成这样的话5.3循环的嵌套循环的嵌套求1!2!3!+20!开始开始定义定义:int:I,j.double:t,sumj=1,sum=0j=20i=1,t=1i=jt=t*ii=i+1sum=sum+t输出输出sum结束结束j=j+1AYNYNA5.3循环的嵌套循环的嵌套main()int i,j;double t,sum=0;for(j=1;j=20;j+)for(i=1,t=1;i=j;i+)
21、t*=i;sum+=t;printf(n1!2!3!+20!=%gn,sum);/*计算每一项的值:求i的阶乘*/*循环:累加20项*/*变量t保存j!*/5.3循环的嵌套循环的嵌套开始开始定义定义:int:I,nn=2n=100i=2i=nNNNYY例5-11 输出2-100以内所有的素数。5.3循环的嵌套循环的嵌套#includestdio.hmain()intn,i;printf(“100以内所有以内所有的素数为:的素数为:n“);for(n=2;n=100;n+)i=2;while(i=n)printf(%4d,n);printf(“n“);/*输出素数*/*能整除:n不是素数,跳出w
22、hile语句,此时in*/用for与while语句的循环嵌套来输出100以内的素数。5.3循环的嵌套循环的嵌套#include math.h#include stdio.hmain()int n,i,k;printf(“100以内所有的素数为:n%4d“,2);for(n=3;n=100;n+=2)k=sqrt(n);for(i=2;ik)printf(%4d,n);printf(n);用for语句的循环嵌套来输出100以内的素数。5.4数组与字符串的使用数组与字符串的使用int i,data100;for(i=0;i100;i+)datai=i;或 for(i=0;i50;i+)datai=
23、i+1;for(i=50;i100;i+)datai=2*i;比如:5.4数组与字符串的使用数组与字符串的使用一维数组的输入与输出。i=i+1开始开始定义定义:intN,aN,ii=0iNi=0iNi=i+1输入输入ai结束结束YNYN确定确定N整型数组整型数组aN控制变量控制变量i输出输出ai5.4数组与字符串的使用数组与字符串的使用#define N 5#include main()int i;int aN;printf(“输入数组a(共%d个整数):“,N);for(i=0;iN;i+)scanf(“%d“,&ai);printf(“数组a各元素为:n“);for(i=0;iN;i+)p
24、rintf(“a%d=%dn“,i,ai);/*说明了一个元素个数为5的整型数组*/5.4数组与字符串的使用数组与字符串的使用求数组元素中的最大、最小值。确定确定N整型数组整型数组termN最大值最大值max最小值最小值min变量变量i开始开始定义定义:int:Nint:termNint:max,minmax=termNmin=termNi=1iNmaxtermi结束结束Yi=i+1NY输入输入term的值的值max=termimintermimax=termiNYN输出输出max输出输出minaa5.4数组与字符串的使用数组与字符串的使用#define N 10main()int termN
25、;/*说明一个元素个数为10的整型数组*/int i,max,min;/*max存放最大数,min存放最小数*/printf(“n输入%d个整数:“,N);for(i=0;iN;i+)scanf(“%d“,&termi);max=term0;/*将数组的第一个元素赋值给max*/min=term0;/*将数组的第一个元素赋值给min*/for(i=1;imax)max=termi;/*找最大值*/if(termi=2),即从第3个数开始,每个数均等于前2个数之和。开始开始定义定义:int:I;int:FibN;int:f1,f2;i=2输出输出Fib0;输出输出Fib1;af1=Fib0=1;
展开阅读全文