C语言循环结构--ppt课件.ppt

上传人:飞****2 文档编号:68980587 上传时间:2022-12-30 格式:PPT 页数:53 大小:772KB
返回 下载 相关 举报
C语言循环结构--ppt课件.ppt_第1页
第1页 / 共53页
C语言循环结构--ppt课件.ppt_第2页
第2页 / 共53页
点击查看更多>>
资源描述

《C语言循环结构--ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言循环结构--ppt课件.ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、循环语句概述循环语句概述问题:求问题:求1100的累计和。的累计和。根据已有的知识,可以用“1+2+100”来求解,但显然很繁琐。现在换个思路来考虑:首先设置一个累计器sum,其初值为0,利用sum=sum+i 来计算(i依次取1、2、100),只要解决以下3个问题即可:(1)将)将i的初值置为的初值置为1;(2)每执行)每执行1次次“sum=sum+i”后,后,i增增1;(3)当)当n增到增到101时,停止计算。此时,时,停止计算。此时,sum的值就是的值就是1100的累计和的累计和。第第1页页ppt课件根据已有的知识,单独实现每一步都不难。但是,由于需要经常使用这种重复计算结构(称为循环结

2、构),C语言提供了循环语句来实现,以简化、并规范循环结构程序设计。在语言中,可用以下语句实现循环:(1)用for语句。(2)用do-while语句。(3)用while语句。第第2页页ppt课件5.1for语句语句循环循环的意思就是让程序的意思就是让程序重复地执行某些语句重复地执行某些语句。C语言提供的循环结构有三种:语言提供的循环结构有三种:for语句、语句、while语句和语句和do_while语句。语句。for语语句句既既可可以以用用于于循循环环次次数数已已知知的的情情况况,也也可可用用于于循循环次数预先不知道的情况。环次数预先不知道的情况。for语句的一般形式为:语句的一般形式为:for

3、();)第第3页页ppt课件功能:功能:先计算先计算的值,然后判断的值,然后判断的值,若该值为的值,若该值为“假假”,则退出循环,执行循环体下面的,则退出循环,执行循环体下面的语句;若该值为语句;若该值为“真真”,则执行,则执行,然后计算,然后计算的值,再判断的值,再判断的值,重复以上的值,重复以上的操作。的操作。for语句的流程图如图语句的流程图如图:一般情况下,一般情况下,是由一对花括括是由一对花括括起来的复合语句。起来的复合语句。第第4页页ppt课件for循环语句注意:循环语句注意:可可以以省省略略,但但须须保保留留分分号号(;),同同时时在在for之前必须给循环变量赋值,如:之前必须给

4、循环变量赋值,如:i=1;for(;i=100;i+)sum=sum+i;一般不可省略,否则为无限循环。一般不可省略,否则为无限循环。如:如:for(i=1;i+)sum=sum+i;相相当当于于条条件件总总为为真真,程程序序会会一一直直不不停停的的执执行行直直到到“数数据据溢出溢出”。第第5页页ppt课件亦亦可可省省略略,但但在在循循环环语语句句体体中中必必须须有有语语句句来来修修改改循循环环变变量量,以以使使条条件件表表达达式式的的值值在在某某一一时时刻为刻为0,从而能正常结束循环。,从而能正常结束循环。如:如:for(sum=0,i=1;i=100;)sum=sum+i;i+;三三个个表

5、表达达式式均均省省略略,即即for(;),为为无无限限循循环环,程程序序中要避免这种情况的发生。中要避免这种情况的发生。条件表达式条件表达式可以是关系表达式、数值表达式。只要表可以是关系表达式、数值表达式。只要表达式的值达式的值 0。就执行循环语句。就执行循环语句。如:如:for(i=0;(c=getchar()!=n;i+=c);第第6页页ppt课件初始表达式、循环表达式可以是逗号表达式初始表达式、循环表达式可以是逗号表达式如:如:for(sum=0,i=1;i=100;i+,i+)相当于:相当于:sum=0;for(i=1;i=100;i=i+2)for循循环环也也可可以以嵌嵌套套,执执行

6、行时时是是由由外外向向里里,逐逐层层进进行行,先先执执行行外外层层循循环环,再再进进入入内内层层循循环环;退退出出时时相相反反,由由里里向向外外逐逐层层退退出出,先先退退出出内内层层循循环环,然然后后退退到到上上一一层层循环。循环。【例【例5-2】任意从键盘输入两个整数】任意从键盘输入两个整数a、b(ab),求它,求它们之间的几何级数的和,数学表达式为。们之间的几何级数的和,数学表达式为。第第7页页ppt课件这个问题与例这个问题与例5-1类似,只是所求级类似,只是所求级数和的初值和终值数和的初值和终值不一样,是由键盘不一样,是由键盘任意输入的,为避任意输入的,为避免计算机错误,免计算机错误,要

7、要求初值求初值a要小于终要小于终值值b。算法流程图如右图:算法流程图如右图:第第8页页ppt课件/*exam5_2.c求几何级数的和求几何级数的和*/#includemain()inti,j,a,b,sum=0;printf(Pleaseinputtwonumber:n);scanf(a=%d,b=%d,&a,&b);i=a;j=b;if(ab)i=b;j=a;for(;i=j;i+)sum=sum+i;printf(sum=%dn,sum);第第9页页ppt课件【例例5-3】编编写写一一个个程程序序,在在屏屏幕幕上上打打印印出出具有具有8行行7列的如下图案:列的如下图案:这这是是一一个个很很

8、有有规规律律的的图图案案,可可采采用用二二重重循循环环嵌嵌套套的的方方式式:第第1层层控控制制行行数数,第第2层控制列数。层控制列数。算法流程图如下图:算法流程图如下图:第第10页页ppt课件/*exam5_3.c打印图打印图案案*/#includemain()inti,j;for(i=1;i=8;i+)for(j=1;j=7;j+)printf(*);printf(n);第第11页页ppt课件5.2while语句语句 While语句也是一种用于产生循环动作的语句,语句也是一种用于产生循环动作的语句,一般形式为:一般形式为:while()功能:功能:先计算先计算的值,若的值,若该值为该值为“假

9、假”,则跳出循环,执,则跳出循环,执行循环体后面的语句;若该值为行循环体后面的语句;若该值为“真真”,则执行,则执行,然后回过头来再检查然后回过头来再检查的的值,重复以上的操作。值,重复以上的操作。while语句的流程图语句的流程图第第12页页ppt课件:是用一对花括号括起来的复合语句。是用一对花括号括起来的复合语句。注注意意:在在中中要要有有使使的的值值为为假假(或或的的值值为为零零)的的语语句句,否否则则会会使使程程序序出出现现无限循环而发生错误。无限循环而发生错误。注注意意:由由于于while循循环环是是先先判判断断的的值值,后后决决定定是是否否执执行行,因因此此,有有可可能能一一次次也

10、也不不执执行行。第第13页页ppt课件【例例5-4】将将例例51用用while语语句句重重写写,求求简简单单几几何何级数的和级数的和。/*exam5_4.c用用while求简单几何级数的和求简单几何级数的和*/#includemain()inti=1,sum=0;while(i=100)sum=sum+i;i+;printf(sum=%dn,sum);程序运行结果:程序运行结果:sum=5050第第14页页ppt课件【例例5-5】输输入入一一个个正正整整数数n,求求n!。计计算算表表达达式式:n!=n*(n-1)*(n-2)*2*1。用用i代代表表循循环环变变量量,s代表代表n!的结果值。的结

11、果值。编程时既可以采用编程时既可以采用for循环,循环,也可以采用也可以采用while循环循环求任意正整数求任意正整数n的阶乘的算的阶乘的算法流程图如图法流程图如图:第第15页页ppt课件/*exam5_5.cwhile应用应用:求求n!*/#includemain()inti,n;longs;printf(pleaseenterainteger:n);scanf(%d,&n);if(n=0)s=1;i=1;while(i=n)s=s*i;i+;printf(%d!=%ld,n,s);elseprintf(Invalidinput!);试改为试改为for循环循环?第第16页页ppt课件whil

12、e 和 for 的比较for(i=1;i=10;i+)sum=sum+i;i=1;循环变量赋初值循环变量赋初值while(i=10)循环条件循环条件 sum=sum+i;i+;循环变量的改变循环变量的改变循环体循环体第第17页页ppt课件例5-6 从键盘输入一批学生的成绩,计算平均分。分析:分析:求累加和求累加和确定循环条件确定循环条件不知道输入数据的个数,无法事先确定循环次数不知道输入数据的个数,无法事先确定循环次数用用一一个个特特殊殊的的数数据据作作为为正正常常输输入入数数据据的的结结束束标标志志,比比如选用一个负数作为结束标志如选用一个负数作为结束标志。第第18页页ppt课件#inclu

13、de Int main(void)int num;double grade,total;num=0;total=0;printf(“Enter grades:n);scanf(%lf,&grade);/*输入第1个数*/while(grade=0)/*输入负数,循环结束*/total =total+grade;num+;scanf(“%lf”,&grade);if(num!=0)printf(“Grade average is%.2fn,total/num);else printf(Grade average is 0n);return 0;Enter grades:67 88 73 54 8

14、2-1Grade average is 72.80Enter grades:-1 67 88 73 54 82Grade average is 0第第19页页ppt课件5.3dowhile语句语句 do_while语句是另一种用于产生循环动作的语句。语句是另一种用于产生循环动作的语句。一般形式为:一般形式为:dowhile();功能:功能:先执行一次先执行一次,然后计算,然后计算的值,的值,若该值为若该值为“真真”,则重复以上的操作,直到该值为,则重复以上的操作,直到该值为“假假”,则退出循环语句,执行下一条语句。,则退出循环语句,执行下一条语句。do_while语句的流程图语句的流程图:第第

15、20页页ppt课件应该是用一对花括号括起来的复合应该是用一对花括号括起来的复合语句。语句。注意注意:要要有有可可以以使使的的值值为为“假假”(即即的的值值等等于于零零)的的语语句句,否否则则会会使使程程序序出出现现无无限限循循环环而而发生错误。发生错误。do_while循循环环与与while循循环环的的区区别别,不不论论情情况况怎怎样样,do_while循环中的循环中的至少会执行一次。至少会执行一次。第第21页页ppt课件【例例5-7】将将例例5-6用用do_while语语句重写句重写。第第22页页ppt课件#include Int main(void)int num;double grade

16、,total;num=0;total=0;do printf(“Enter grades:);scanf(“%lf”,&grade);total =total+grade;num+;while(grade=0);/*输入负数,循环结束*/printf(“Grade average is%.2fn,(total+1)/(num-1);return 0;Enter grades:67 88 73 54 82-1Grade average is 72.80Enter grades:-1 67 88 73 54 82Grade average is 0第第23页页ppt课件【例例5-8】求求sin(x

17、)=x-x3/3!+x5/5!-x7/7!+直直到到最最后一项绝对值小于后一项绝对值小于le-7(即(即10-7)为止。)为止。分析:分析:多项式从第二项起,每一项都是前一项乘以一个因子,多项式从第二项起,每一项都是前一项乘以一个因子,(-x2)/(n*(n-1)(n=3,5,7,9)用用s代表代表sin(x)的值,的值,t代表每一项的值,代表每一项的值,则:则:t=t*(-x2)/(n*(n-1);s=s+t;x的值是用弧度值表示的的值是用弧度值表示的(10=180弧度弧度),如:,如:300 0.523598775算法流程图如后图:算法流程图如后图:第第24页页ppt课件第第25页页ppt

18、课件/*exam5_8.c求求sin(x)的值的值*/#include#includemain()doubles,t,x;intn=1;scanf(%lf,&x);t=x;s=x;don=n+2;t=t*(-x*x)/(n*(n-1);s=s+t;while(fabs(t)=1e-7);printf(sin(%lf)=%lfn,x,s);程序运行结果程序运行结果:1.57 sin(1.570000)=1.000000第第26页页ppt课件 while 是先判别条件,再决定是否循环;do-while 是先至少循环一次,然后再根据循环的结果决定是否继续循环。while 和 do-while 的比较

19、真真假假表达式表达式循环体语句循环体语句do-while的下一条语句的下一条语句真真假假while的下一条语句的下一条语句表达式表达式循环体语句循环体语句第第27页页ppt课件 循环语句的选择if(循环次数已知)使用for语句else /*循环次数未知*/if (循环条件在进入循环时明确)使用while语句else /*循环条件需要在循环体中明确*/使用do-while语句第第28页页ppt课件5.4用于循环中的用于循环中的break和和continue语句语句一、一、break语句语句break语句的语句的作用作用是从一种控制结构中跳出来是从一种控制结构中跳出来。break语句可用于循环结构

20、,其作用是语句可用于循环结构,其作用是从本层循环结构中从本层循环结构中跳出,跳出,可以提前结束执行可以提前结束执行,执行循环结构,执行循环结构外的下一条语句。外的下一条语句。break语句的一般形式为:语句的一般形式为:break;break语句在循环语句体中的语句在循环语句体中的位置位置应根据程序的需要而定,应根据程序的需要而定,一般是用在循环体内一般是用在循环体内某一个某一个if条件分支的语句中条件分支的语句中,用来表,用来表示在循环过程中当某一个条件成立时提前结束循环。示在循环过程中当某一个条件成立时提前结束循环。第第29页页ppt课件 程序解析判断素数算法:除了1和m,不能被其它数整除

21、。设 i 取值 2,m-1 如果m不能被该区间上的任何一个数整除,即对每个i,m%i 都不为0,则m是素数只要找到一个i,使m%i为0,则m肯定不是素数m%2%3%4%5%(m-1)不是素数|=0 =0是素数&!=0 !=0 m不可能被大于 m/2 的数整除 i 取值 2,m-1、2,m/2、2,for(i=2;i m/2)printf(yesn)else printf(non”);第第30页页ppt课件int main(void)int i,m;printf(“Enter a number:);scanf(%d,&m);for(i=2;i m/2)printf(%d is a prime n

22、umber!n,m);else printf(No!n);源程序判断素数Enter a number:9NoEnter a number:1111 is a prime number!循环条件循环条件?循环的结束条件循环的结束条件?第第31页页ppt课件break 语句while(exp)语句1 if(expb)break;语句2真真假假exp语句语句1假假expb 语语 句句2循循环环体体真真for(i=2;i m/2)printf(Yes);else printf(No!n);当循环有多个出口时:当循环有多个出口时:表示循环条件表示循环条件区分结束条件区分结束条件for(i=2;i=m/2

23、;i+)if(m%i=0)printf(No!n);break;printf(Yes);第第32页页ppt课件二、二、Continue语句语句Continue语句只适用于循环结构,其一般形式为:语句只适用于循环结构,其一般形式为:作用:提前结束本次循环作用:提前结束本次循环,提前,提前进行下一次循环进行下一次循环。【例【例5-10】编写程序,打印】编写程序,打印100200中不能被中不能被3整除的数。整除的数。/*exam5_10.c求不能被求不能被3整除的数整除的数*/#includemain()intn;for(n=100;n=200;n+)if(n%3=0)continue;printf

24、(%dt,n);第第33页页ppt课件算法流程图如图算法流程图如图:要准确地使用要准确地使用break语句和语句和continue语句语句,除非有必要除非有必要,否则否则若可以不用则若可以不用则尽量尽量不采用不采用break语句和语句和continue语句。语句。第第34页页ppt课件对对于于例例5-10的的问问题题,打打印印100 200中中不不能能被被3整整除除的的数数。不不采采用用continue语语句句的的算算法法流流程程图图如如图图所所示:示:第第35页页ppt课件/*exam5q10.c例例5-10问题不用问题不用continue*#includemain()intn;for(n=

25、100;n=200;n+)if(n%3!=0)/*n不能被不能被3整除整除*/printf(%d,n);第第36页页ppt课件【例【例5-11】break语句和语句和continue语句在程序中的区别语句在程序中的区别/*exam5_11.c break的的作作用用*/#includemain()intx;for(x=1;x=10;+x)if(x=5)break;printf(%d,x);运行结果运行结果:1,2,3,4,/*exam5q11.c continue的的作作用用*/#includemain()intx;for(x=1;x=10;+x)if(x=5)continue;printf(

26、%d,x);运运行行结结果果:1,2,3,4,6,7,8,9,10,第第37页页ppt课件5.5循环结构的嵌套循环结构的嵌套循环结构的嵌套,指的是某一种循环结构的语句中,循环结构的嵌套,指的是某一种循环结构的语句中,包含包含有另一个循环结构。有另一个循环结构。使用嵌套的结构时,要注意嵌套的层次,使用嵌套的结构时,要注意嵌套的层次,不能交叉不能交叉。例5.12 求1!+2!+.+100!第第38页页ppt课件嵌套循环for(i=1;i=100;i+)item=i!sum=sum+item;for(i=1;i=100;i+)item=1;for(j=1;j=i;j+)item=item*j;sum

27、=sum+item;第第39页页ppt课件例4-6 源程序#include int main(void)int i,j;double item,sum;/*item 存放阶乘*/sum=0;for(i=1;i=100;i+)item=1;/*每次求阶乘都从1开始*/for(j=1;j=i;j+)/*内层循环算出 item=i!*/item=item*j;sum=sum+item;printf(1!+2!+3!+100!=%en,sum);第第40页页ppt课件内层循环的初始化for(i=1;i=100;i+)item=1;for(j=1;j=i;j+)item=item*j;sum=sum+i

28、tem;求求1!+2!+.+100!item=1;for(i=1;i=100;i+)for(j=1;j=i;j+)item=item*j;sum=sum+item;求求1!+1!*2!+1!*2!*100!?第第41页页ppt课件分析嵌套循环的执行过程for(i=1;i=100;i+)item=1;for(j=1;j=i;j+)item=item*j;sum=sum+item;n 外层循环变量外层循环变量 i 的每个值的每个值内层循环变量内层循环变量 j 变化一个轮次;变化一个轮次;n 内外层循环变量不能相同内外层循环变量不能相同分别用分别用 i 和和 j第第42页页ppt课件for(i=1;

29、i=100;i+)for(j=1;j=i;j+)printf(%d%dn,i,j);第第43页页ppt课件5.6goto语句语句goto语语句句是是一一种种无无条条件件转转向向语语句句,它它可可以以用用在在程程序序的的任任何地方,其一般形式为:何地方,其一般形式为:goto语句标号;语句标号;“语语句句标标号号”为为任任何何合合法法的的标标识识符符,放放在在某某个个语语句句前前面面并并加加上上冒冒号号“:”作作为为语语句句的的标标号号,标标号号只只对对goto语语句句有意义,带有标号的语句被称作标号语句。有意义,带有标号的语句被称作标号语句。如:如:error:、end:、exp:等均为合法的

30、语句的标号。等均为合法的语句的标号。goto语句的语句的作用作用:转到标号语句所在的地方继续执行。:转到标号语句所在的地方继续执行。第第44页页ppt课件【例【例5-13】用】用if语句和语句和goto语句组合构成的循环重语句组合构成的循环重写计算器写计算器的程序。的程序。/*exam5_13.cif+goto构成循环构成循环*/#includemain()inti,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;gotoloop;printf(sum=%d,sum);程序运行结果:程序运行结果:sum=5050gotogoto语句是一种非结构语句是一种非结构语句是一

31、种非结构语句是一种非结构化的语句,在程序设化的语句,在程序设化的语句,在程序设化的语句,在程序设计中应尽量少用或不计中应尽量少用或不计中应尽量少用或不计中应尽量少用或不用用用用gotogoto语句。语句。语句。语句。第第45页页ppt课件5.7程序范例程序范例【例例5-16】打打印印出出ASC码码序序列列中中从从33127(十十进进制制)的字符对照表。的字符对照表。/*exam5_16.c打印部分打印部分ASCII码字符码字符*/#includemain()inti;for(i=33;i128;i+)printf(%d-%ct,i,i);第第46页页ppt课件【例例5-17】设设公公鸡鸡每每只

32、只5元元,母母鸡鸡每每只只3元元,小小鸡鸡每每元元3只只,现现用用100元元钱钱买买100只只鸡鸡,编编写写一一个个程程序序,算算出出可可以各买多少只鸡?以各买多少只鸡?#includemain()inti,j,k;for(i=0;i*5=100;i+)for(j=0;j*3=100;j+)for(k=0;k/3=100;k+=3)if(i*5+j*3+k/3)=100&(i+j+k)=100)printf(Cock-%dtHen-%dtChicken-%dn,i,j,k);第第47页页ppt课件程序运行结果程序运行结果:Cock-0Hen-25Chicken-75Cock-4Hen-18Ch

33、icken-78Cock-8Hen-11Chicken-81Cock-12Hen-4Chicken-84第第48页页ppt课件小小结:三种循环结构:三种循环结构:for、while和和do_while循环。循环。当循环次数是肯定的情况下,用当循环次数是肯定的情况下,用for循环比较方便。循环比较方便。while循循环环和和for循循环环都都要要先先判判断断条条件件再再执执行行循循环环语语句句体,因此,有可能一次也不执行循环语句体。体,因此,有可能一次也不执行循环语句体。do_while循环循环不论怎样不论怎样都会先执行都会先执行一次循环语句体。一次循环语句体。注意避免以下几个方面的问题:注意避

34、免以下几个方面的问题:1循环语句体为复合语句,但没有使用花括号。循环语句体为复合语句,但没有使用花括号。2使程序发生无限循环。使程序发生无限循环。3混淆混淆break语句与语句与continue语句的功能。语句的功能。第第49页页ppt课件循环程序设计循环程序的实现要点:归纳出哪些操作需要反复执行?循环体这些操作在什么情况下重复执行?循环条件选用合适的循环语句for while do-while循环具体实现时考虑(循环条件):事先给定循环次数,首选for通过其他条件控制循环,考虑while或do-while第第50页页ppt课件#include int main(void)int i,mark

35、,max,n;printf(Enter n:);scanf(%d,&n);printf(Enter%d marks:,n);scanf(%d,&mark);/*读入第一个成绩*/max=mark;/*假设第一个成绩是最高分*/for(i=1;i n;i+)scanf(%d,&mark);if(max mark)max=mark;printf(Max=%dn,max);return 0;例5-18 输入一批学生的成绩,求最高分(for)mark maxmaxmarkEnter n:5Enter 5 maks:67 88 73 54 82Max=88Enter n:0第第51页页ppt课件#inc

36、lude int main(void)int mark,max;printf(“Enter marks:);scanf(%d,&mark);/*读入第一个成绩*/max=mark;/*假设第一个成绩最高分*/while(mark=0)if(max mark)max=mark;scanf(%d,&mark);printf(Max=%dn,max);return 0;例5-19 输入一批学生的成绩,求最高分(while)Enter marks:67 88 73 54 82-1Max=88Enter marks:-1第第52页页ppt课件#include int main(void)int mark,max;max=-1;/*给max赋一个小初值*/printf(“Enter marks:);do scanf(%d,&mark);if(max=0);printf(Max=%dn,max);例5-20输入一批学生的成绩,求最高分(do-while)Enter marks:67 88 73 54 82-1Max=88Enter marks:-1第第53页页ppt课件

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁