C语言循环结构课件.ppt

上传人(卖家):晟晟文业 文档编号:4741785 上传时间:2023-01-06 格式:PPT 页数:53 大小:1.28MB
下载 相关 举报
C语言循环结构课件.ppt_第1页
第1页 / 共53页
C语言循环结构课件.ppt_第2页
第2页 / 共53页
C语言循环结构课件.ppt_第3页
第3页 / 共53页
C语言循环结构课件.ppt_第4页
第4页 / 共53页
C语言循环结构课件.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

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课件循环循环的意思就是让程序的意思就是让程序重复地执行某些语句重复地执行某些语句。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),求它,求它们之间的几何级数的和,数学表达式为。们之间的几何级数的和,数学表达式为。biaii第第7页页ppt课件这个问题与例这个问题与例5-1类似,只是所求级类似,只是所求级数和的初值和终值数和的初值和终值不一样,是由键盘不一样,是由键盘任意输入的,为避任意输入的,为

7、避免计算机错误,免计算机错误,要要求初值求初值a要小于终要小于终值值b。算法流程图如右图:算法流程图如右图:第第8页页ppt课件/*exam5_2.c 求几何级数的和求几何级数的和*/#include main()int i,j,a,b,sum=0;printf(Please input two number: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行行

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

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

10、是否执行定是否执行,因此,有可能一次也不执,因此,有可能一次也不执行行。第第13页页ppt课件【例【例5-4】将例将例51用用while语句重写,语句重写,求简单几何求简单几何级数的和级数的和。/*exam5_4.c 用用while求简单几何级数的和求简单几何级数的和*/#include main()int i=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-

11、2)*2*1。用。用i代表循环变量,代表循环变量,s代表代表n!的结果值。的结果值。编程时既可以采用编程时既可以采用for循环,循环,也可以采用也可以采用while循环循环 求任意正整数求任意正整数n的阶乘的算的阶乘的算法流程图如图法流程图如图:第第15页页ppt课件/*exam5_5.c while应用应用:求求n!*/#include main()int i,n;long s;printf(please enter a integer:n);scanf(%d,&n);if(n=0)s=1;i=1;while(i=n)s=s*i;i+;printf(%d!=%ld,n,s);elseprin

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

13、结束标志,比如选用一个负数作为结束标志比如选用一个负数作为结束标志。第第18页页ppt课件#include 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

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

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

16、include Int main(void)int num;double grade,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 82G

17、rade average is 0第第23页页ppt课件【例【例5-8】求】求sin(x)=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.523

18、598775 算法流程图如后图:算法流程图如后图:第第24页页ppt课件第第25页页ppt课件/*exam5_8.c 求求sin(x)的值的值*/#include#include main()double s,t,x;int n=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-whil

19、e 是先至少循环一次,然后再根据循环的结果决定是否继续循环。while 和 do-while 的比较真真假假表达式表达式循环体语句循环体语句do-while的下一条语句的下一条语句真真假假while的下一条语句的下一条语句表达式表达式循环体语句循环体语句第第27页页ppt课件 循环语句的选择if(循环次数已知)使用for语句else /*循环次数未知*/if (循环条件在进入循环时明确)使用while语句else /*循环条件需要在循环体中明确*/使用do-while语句第第28页页ppt课件 一、一、break语句语句 break语句的语句的作用作用是从一种控制结构中跳出来是从一种控制结构中

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

21、数算法:除了1和m,不能被其它数整除。设 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,mfor(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)pr

22、intf(%d is a prime number!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);当循环有多个出口时:当循环有多个出口时:表示循环条件表示循环条件 区

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

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

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

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

27、100;i+)item=1;for(j=1;j=i;j+)item=item*j;sum=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+

28、)item=1;for(j=1;j=i;j+)item=item*j;sum=sum+item;求求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 内外层循环变量不能相

29、同内外层循环变量不能相同分别用分别用 i 和和 j第第42页页ppt课件i=1j=1输出 1 1(第1次输出)j=1输出 2 1(第2次输出)i=2j=2输出 2 2(第3次输出)j=1输出 100 1(第4951次输出)j=2输出 100 2(第4952次输出)i=100j=100输出 100 100(第5050次输出)for(i=1;i=100;i+)for(j=1;j=i;j+)printf(%d%dn,i,j);第第43页页ppt课件 goto语句是一种语句是一种无条件转向语句无条件转向语句,它可以用在程序的,它可以用在程序的任何地方,其一般形式为:任何地方,其一般形式为:goto 语

30、句标号;语句标号;“语句标号语句标号”为任何合法的标识符,放在某个语句前面为任何合法的标识符,放在某个语句前面并加上冒号并加上冒号“:”作为语句的标号,标号只对作为语句的标号,标号只对goto 语句语句有意义,带有标号的语句被称作标号语句。有意义,带有标号的语句被称作标号语句。如:如:error:、end:、exp:等均为合法的语句的标号。等均为合法的语句的标号。goto语句的语句的作用作用:转到标号语句所在的地方继续执行。:转到标号语句所在的地方继续执行。第第44页页ppt课件【例【例5-13】用】用if语句和语句和goto语句组合构成的循环重语句组合构成的循环重写计算器写计算器 的程序。的

31、程序。1001ii/*exam5_13.c if+goto构成循环构成循环*/#include main()int i,sum=0;i=1;loop:if(i=100)sum=sum+i;i+;goto loop;printf(sum=%d,sum);程序运行结果:程序运行结果:sum=5050第第45页页ppt课件【例【例5-16】打印出】打印出ASC码序列中从码序列中从33127(十进制)(十进制)的字符对照表。的字符对照表。/*exam5_16.c 打印部分打印部分ASCII码字符码字符*/#include main()int i;for(i=33;i128;i+)printf(%d-%

32、ct,i,i);第第46页页ppt课件【例【例5-17】设公鸡每只】设公鸡每只5元,母鸡每只元,母鸡每只3元,小鸡每元元,小鸡每元3只,现用只,现用100元钱买元钱买100只鸡,编写一个程序,算出可只鸡,编写一个程序,算出可以各买多少只鸡?以各买多少只鸡?#include main()int i,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课件程序运行

33、结果程序运行结果:Cock-0 Hen-25 Chicken-75Cock-4 Hen-18 Chicken-78Cock-8 Hen-11 Chicken-81Cock-12 Hen-4 Chicken-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通过其他条件控制循环,考虑

35、while或do-while第第50页页ppt课件#include int main(void)int i,mark,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:

36、5Enter 5 maks:67 88 73 54 82Max=88Enter n:0第第51页页ppt课件#include 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课件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言循环结构课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|