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

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

《C语言循环结构ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言循环结构ppt课件.ppt(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课件,根据已有的知识,单独实现每一步都不难。但是,由于需要经常使用这种重复计算结构(称为循环结构),C语言提供了循环语句来实现,以简化、并规范循环结构程序设计。在语言中,可用以下语句实现循环:

2、(1)用for语句。(2)用do-while语句。(3)用while语句。,第2页,ppt课件,5.1 for语句,循环的意思就是让程序重复地执行某些语句。,C语言提供的循环结构有三种:for语句、while语句和do_while语句。,for语句既可以用于循环次数已知的情况,也可用于循环次数预先不知道的情况。,for语句的一般形式为:,for();),第3页,ppt课件,功能:先计算的值,然后判断的值,若该值为“假”,则退出循环,执行循环体下面的语句;若该值为“真”,则执行,然后计算的值,再判断的值,重复以上的操作。,for语句的流程图如图:,一般情况下,是由一对花括括起来的复合语句。,第4

3、页,ppt课件,for循环语句注意:,可以省略,但须保留分号(;),同时在for之前必须给循环变量赋值,如: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+;,三个表达式均省略,即for(;),为无限循环,程序中要避免这种情况的发生。,条件表达式可以是关系表

4、达式、数值表达式。只要表达式的值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循环也可以嵌套,执行时是由外向里,逐层进行,先执行外层循环,再进入内层循环;退出时相反,由里向外逐层退出,先退出内层循环,然后退到上一层循环。,【例5-2】任意从键盘输入两个整数a、b(ab),求它们之间的几何级数的和,数学表达式为。,第7页,ppt课件,这个问题与例5-1类似,只是所求级数和的

5、初值和终值不一样,是由键盘任意输入的,为避免计算机错误,要求初值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,第9页,ppt课件,【例5-3】编写一个程序,在屏幕上打印出具有8行7列的如下图案:,这是一个很有规律的图案,可采用二重循环嵌套的方式:第1层控制行数,第2层控制列数。,算法流程图如下图:,第10页,ppt课件,/*exam5_3.c 打印图案*/#include ma

6、in()int i,j;for(i=1;i=8;i+)for(j=1;j=7;j+)printf(*);printf(n);,第11页,ppt课件,5.2 while语句,While语句也是一种用于产生循环动作的语句,一般形式为:,while(),功能:先计算的值,若该值为“假”,则跳出循环,执行循环体后面的语句;若该值为“真”,则执行,然后回过头来再检查的值,重复以上的操作。,while语句的流程图,第12页,ppt课件,:是用一对花括号括起来的复合语句。,注意:在中要有使的值为假(或的值为零)的语句,否则会使程序出现无限循环而发生错误。,注意:由于while循环是先判断的值,后决定是否执行

7、,因此,有可能一次也不执行。,第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-2)*2*1。用i代表循环变量,s代表n!的结果值。,编程时既可以采用for循环,也可以采用while循环,求任意正整数n的阶乘的算法流程图如

8、图:,第15页,ppt课件,/*exam5_5.c while应用:求n!*/#include main()int i,n;long s;printf(please enter a integer:n);scanf(%d,试改为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 从键盘输入一批学生的成绩,计算平均分。分析:求累加和确定循环条件不知道输入数据的个数,无法事先确定循环次数用一个特

9、殊的数据作为正常输入数据的结束标志,比如选用一个负数作为结束标志。,第18页,ppt课件,#include Int main(void)int num;double grade,total;num=0;total=0;printf(“Enter grades:n);scanf(%lf,Enter grades:67 88 73 54 82-1Grade average is 72.80,Enter grades:-1 67 88 73 54 82Grade average is 0,第19页,ppt课件,5.3 dowhile语句,do_while语句是另一种用于产生循环动作的语句。一般形式为

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

11、 grade,total;num=0;total=0;do printf(“Enter grades:);scanf(“%lf”,Enter grades:67 88 73 54 82-1Grade average is 72.80,Enter grades:-1 67 88 73 54 82Grade 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)

12、的值,t代表每一项的值,则:t=t*(-x2)/(n*(n-1);s=s+t;x的值是用弧度值表示的(10=180弧度),如:3000.523598775,算法流程图如后图:,第24页,ppt课件,第25页,ppt课件,/*exam5_8.c 求sin(x)的值*/#include#include main()double s,t,x;int n=1;scanf(%lf,程序运行结果:1.57sin(1.570000)=1.000000,第26页,ppt课件,while 是先判别条件,再决定是否循环;do-while 是先至少循环一次,然后再根据循环的结果决定是否继续循环。,while 和 d

13、o-while 的比较,第27页,ppt课件,循环语句的选择,if(循环次数已知)使用for语句else/*循环次数未知*/if(循环条件在进入循环时明确)使用while语句else/*循环条件需要在循环体中明确*/使用do-while语句,第28页,ppt课件,5.4 用于循环中的break和continue语句,一、break语句,break语句的作用是从一种控制结构中跳出来。break语句可用于循环结构,其作用是从本层循环结构中跳出,可以提前结束执行,执行循环结构外的下一条语句。,break语句的一般形式为:break;,break语句在循环语句体中的位置应根据程序的需要而定,一般是用在

14、循环体内某一个if条件分支的语句中,用来表示在循环过程中当某一个条件成立时提前结束循环。,第29页,ppt课件,程序解析判断素数,算法:除了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,for(i=2;i m/2)printf(yesn)else printf(non”);,第30页,ppt课件,int main(void)i

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

16、32页,ppt课件,二、Continue语句,Continue语句只适用于循环结构,其一般形式为:,作用:提前结束本次循环,提前进行下一次循环。,【例5-10】编写程序,打印100200中不能被3整除的数。,/*exam5_10.c 求不能被3整除的数*/#include main()int n;for(n=100;n=200;n+)if(n%3=0)continue;printf(%dt,n);,第33页,ppt课件,算法流程图如图:,要准确地使用break语句和continue语句,除非有必要,否则若可以不用则尽量不采用break语句和continue语句。,第34页,ppt课件,对于例5

17、-10的问题,打印100200中不能被3整除的数。不采用continue语句的算法流程图如图所示:,第35页,ppt课件,/*exam5q10.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);,运行

18、结果:1,2,3,4,/*exam5q11.c continue的作用*/#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.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+

19、)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+)i

20、tem=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;,外层循环变量 i 的每个值内层循环变量 j 变化一个轮次;内外层循环变量不能相同分别用 i 和 j,第42页,ppt课件,for

21、(i=1;i=100;i+)for(j=1;j=i;j+)printf(%d%dn,i,j);,第43页,ppt课件,5.6 goto语句,goto语句是一种无条件转向语句,它可以用在程序的任何地方,其一般形式为:,goto 语句标号;,“语句标号”为任何合法的标识符,放在某个语句前面并加上冒号“:”作为语句的标号,标号只对goto 语句有意义,带有标号的语句被称作标号语句。,如:error:、end:、exp:等均为合法的语句的标号。,goto语句的作用:转到标号语句所在的地方继续执行。,第44页,ppt课件,【例5-13】用if语句和goto语句组合构成的循环重写计算器 的程序。,/*ex

22、am5_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,goto语句是一种非结构化的语句,在程序设计中应尽量少用或不用goto语句。,第45页,ppt课件,5.7 程序范例,【例5-16】打印出ASC码序列中从33127(十进制)的字符对照表。,/*exam5_16.c 打印部分ASCII码字符*/#include main()int i;for(i=33;i128;i+)printf(%d-%ct,

23、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,第47页,ppt课件,程序运行结果:Cock-0 Hen-25 Chicken-75Cock-4 Hen-18 Chicken-78Cock-8 Hen-11 Chicken-81Cock-12 Hen-4 Chicken-84,第4

24、8页,ppt课件,小结:,三种循环结构:for、while和do_while循环。,当循环次数是肯定的情况下,用for循环比较方便。,while循环和for循环都要先判断条件再执行循环语句体,因此,有可能一次也不执行循环语句体。do_while循环不论怎样都会先执行一次循环语句体。,注意避免以下几个方面的问题:,1循环语句体为复合语句,但没有使用花括号。2使程序发生无限循环。3混淆break 语句与continue语句的功能。,第49页,ppt课件,循环程序设计,循环程序的实现要点:归纳出哪些操作需要反复执行?循环体这些操作在什么情况下重复执行?循环条件选用合适的循环语句for while d

25、o-while循环具体实现时考虑(循环条件):事先给定循环次数,首选for通过其他条件控制循环,考虑while或do-while,第50页,ppt课件,#include int main(void)int i,mark,max,n;printf(Enter n:);scanf(%d,例5-18 输入一批学生的成绩,求最高分(for),max,mark,Enter n:5Enter 5 maks:67 88 73 54 82Max=88,Enter n:0,第51页,ppt课件,#include int main(void)int mark,max;printf(“Enter marks:);scanf(%d,例5-19 输入一批学生的成绩,求最高分(while),Enter marks:67 88 73 54 82-1Max=88,Enter marks:-1,第52页,ppt课件,#include int main(void)int mark,max;max=-1;/*给max赋一个小初值*/printf(“Enter marks:);do scanf(%d,例5-20输入一批学生的成绩,求最高分(do-while),Enter marks:67 88 73 54 82-1Max=88,Enter marks:-1,第53页,ppt课件,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号