第5章 循环结构程序设计(第6,7,8次课).ppt
《第5章 循环结构程序设计(第6,7,8次课).ppt》由会员分享,可在线阅读,更多相关《第5章 循环结构程序设计(第6,7,8次课).ppt(79页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第第5 5章章循环结构程序设计循环结构程序设计5.1 为什么需要循环控制为什么需要循环控制5.2 用用while语句实现循环语句实现循环5.3 用用dowhile语句实现循环语句实现循环5.4 用用for语句实现循环语句实现循环5.5 循环的嵌套循环的嵌套5.6 几种循环的比较几种循环的比较5.7 break语句和语句和continue语句语句5.8 程序举例程序举例【例例】求求1+2+3+4+5。最直观的方法:最直观的方法:步骤步骤1:先求:先求1+2,得到结果,得到结果3。步骤步骤2:将步骤:将步骤1得到的和得到的和3加上加上3,得到结果,得到结果6。步骤步骤3:将:将6再加上再加上4,得
2、,得10。步骤步骤4:将:将10再加上再加上5,得,得15。简单算法举例简单算法举例这样的算法虽然正确,但太繁,数目太大时也不现实,无这样的算法虽然正确,但太繁,数目太大时也不现实,无法用程序实现。法用程序实现。5.1 概概 述述【观察观察】求求1+2+3+4+5。被加数被加数加数加数初始值:初始值:1以后:以后:上一次的和上一次的和初始值:初始值:有规律地递增,即有规律地递增,即+12以后:以后:规规律律:pip=p+i;i+;【例例】求求1+2+3+4+5S1:使使 p=1S2:使使 i=2S3:使使 p+i,和和仍然放在在变量仍然放在在变量p中,中,即:即:p=p+iS4:使使 i 的值
3、的值+1,即,即i=i+1或或i+S5:判断判断i5,若成立,返回重新执行步骤若成立,返回重新执行步骤S3以及其以及其后的后的S4和和S5(循环操作);(循环操作);若不成立,算法结束。此时的若不成立,算法结束。此时的p值为值为 值。值。改进的方法:改进的方法:5.2 用用while语句实现循环语句实现循环一般形式:一般形式:while(表达式表达式)循环体语句循环体语句组组;执行流程:执行流程:表达式表达式循环体语句组循环体语句组假假(0)(0)真真(非非0)0)#include int main()int i,s;i=1;s=0;while(i=5)s=s+i;i+;printf(resu
4、lt=%d,s);return 0;【例例】用用while结构实现结构实现 求求1+2+3+4+5/*循环变量初始化值循环变量初始化值*/*循环条件循环条件*/*循环体语句组循环体语句组*/#include int main()int i,p;i=2;p=1;while(i=5)p=p*i;i=i+1;printf(result=%d,p);return 0;【练习练习】仿照上例写出求仿照上例写出求125的值的值例例5.1 用用while循环求循环求1100的和的和练习一下练习一下例例5.1 用用while循环求循环求1100的和的和#include int main()int i,sum;p
5、rintf(sum=%d,i=%dn,sum,i);return 0;程序运行结果:程序运行结果:sum=,i=sum=0;i=;while()sum+=i;i+;1i=100sum=5050,i=101思考思考:(1)循环次数?)循环次数?(2)若)若i=0,会不会影响会不会影响最后的运行结果?最后的运行结果?100次次不会不会求阶乘求阶乘 n!求求1n的累加和的累加和求求p=1234n(n10)即:即:s=1+2+3+4+n初始值:初始值:p=1;i=1;s=s+i;i+;p=p*i;i+;初始值:初始值:s=0;i=1;思考思考即:即:s=1+3+5+n求求1n的奇数累加和的奇数累加和s
6、=s+i;i=i+2;s=0;i=1;初始值:初始值:思考思考即:即:s=2+4+6+n求求1n的偶数累加和的偶数累加和s=s+i;i=i+2;s=0;i=2;初始值:初始值:思考思考求求1n的阶乘的和的阶乘的和即:即:s=1!+2!+n!(1)做法)做法1:s=1!+2!+n!=1!+1!*2+2!*3+(n-1)!*n初始值:初始值:s=0;i=1;每一项每一项=上一项上一项*i (i=2n)#include void main()int i=1,s=0,p=1;while(i=5)/求求1!+2!+3!+4!+5!printf(sum=%d,i=%dn,sum,i);p=p*i;s=s+
7、p;i+;思考思考求求1n的阶乘的和的阶乘的和即:即:s=1!+2!+n!(1)做法)做法2:双重循环双重循环s=1!+2!+n!=1!+1!*2+2!*3+(n-1)!*n初始值:初始值:s=0;i=1;每一项每一项=上一项上一项*i (i=2n)#include void main()int i=1,s=0,p,j;while(i=5)/求求1!+2!+3!+4!+5!j=1;p=1;while(j=i)/求求i!p=p*j;j+;s=s+p;printf(sum=%d,i=%dn,sum,i);j=1;p=1;while(j=i)p=p*j;j+;#include void main()
8、int i=1,s=0,p,j;while(i=5)/求求1!+2!+3!+4!+5!j=1;p=1;while(j=i)/求求i!p=p*j;j+;s=s+p;i+;printf(sum=%d,i=%dn,sum,i);5.3 用用dowhile语句实现循环语句实现循环一般形式:一般形式:do 循环体语句循环体语句组组;while(表达式表达式);执行流程:执行流程:循环体语句组循环体语句组;表达式表达式假假(0)(0)真真(非非0)0)有分号有分号例例5.2 用用dowhile循环求循环求1100的和的和#include void main()int i,sum;i=1;sum=0;do
9、sum=sum+i;i+;while(i=100)printf(sum=%d,i=%d,sum,i);程序运行结果:程序运行结果:sum=,i=;sum=5050,i=101例例 用用dowhile循环求循环求15的乘积的乘积练习一下练习一下【例例】用用dowhile结构实现结构实现 求求12345/*循环变量初始化值循环变量初始化值*/#include void main()int i,p;i=2;p=1;while(i=5)p=p*i;i=i+1;printf(result=%d,p);/while结构结构/*循环条件循环条件*/*循环体语句组循环体语句组*/#include void m
10、ain()int i,p;i=2;p=1;do p=p*i;i=i+1;while(i=5)printf(result=%d,p);/dowhile结构结构;while和和dowhile比较比较#include void main()int i,sum=0;i=1;do sum+=i;i+;while(i=100);printf(%d,sum);#include void main()int i,sum=0;i=1;while(i=100)sum+=i;i+;printf(%d,sum);#include void main()int i,sum=0;scanf(%d,&i);do sum+=
11、i;i+;while(i=10);printf(%d,sum);#include void main()int i,sum=0;scanf(%d,&i);while(i=10)sum+=i;i+;printf(%d,sum);继续继续比较比较转下页两个程序先后两次分别输入两个程序先后两次分别输入1和和11,查看结果。,查看结果。第一次运行:1再运行一次:11sum=55sum=11第一次运行:1再运行一次:11sum=55sum=0While结构结构运行情况:运行情况:dowhile结构结构运行情况:运行情况:上一页结论:结论:while 和和dowhile结构何时相同?结构何时相同?何时不同
12、?何时不同?P119 循环结构的三个基本要素循环结构的三个基本要素F循环变量初始化,循环变量初始化,如:如:i=1;s=0;F循环条件,循环条件,如:如:i=100F循环趋向结束语句,循环趋向结束语句,如:如:i+;一般形式:一般形式:5.4 用用for语句实现循环语句实现循环for(expr1;expr2;expr3)循环体语句循环体语句组组;/end of for假假(0)(0)expr2expr2循环体语句组循环体语句组;真真(非非0)0)expr1expr1expr3expr3expr1:在循环体在循环体外外外外先执行先执行(作用作用:循环变量赋初值循环变量赋初值,只执行只执行1次次)
13、expr2:作为循环条件表达式作为循环条件表达式expr3:作为整个循环过程的最后作为整个循环过程的最后一条语句自动运行。一条语句自动运行。(作用作用:修改循环变量的值修改循环变量的值)执行流程:执行流程:for(expr1;expr2;expr3)循环体语句循环体语句组组;图图图图6-66-6while()循环体语句;循环体语句;for(expr1;expr2;expr3)循环体语句;循环体语句;do 循环体语句;循环体语句;while();expr1;expr2expr3;expr1;expr2expr3;#include void main()int i,sum=0;i=1;while(
14、i=100)sum+=i;i+;printf(%d,sum);已知用已知用while结构结构求求“1100的和的和”请改为请改为for结构实现结构实现to student#include void main()int i,s=0;printf(%dn,s);#include void main()int i,s=0;i=1;while(i=100)s+=i;i+;printf(%dn,s);对比用对比用while结构和结构和for结构结构求求“1100的和的和”for(;)i=1 i=100 i+s+=i;#include void main()int i,s=0;printf(%dn,s);
15、#include void main()int i,s=0;i=1;while(i=100)s+=i;i+;printf(%dn,s);对比用对比用while结构和结构和for结构结构求求“1100的和的和”for(;)i=1 i=100i+s+=i;练习:练习:for循环求表达式的值循环求表达式的值f=1+1/3+1/5+1/9to student练习:练习:for循环求表达式的值循环求表达式的值f=1+1/3+1/5+1/9#include void main()/for循环循环 int i;float f=0;for(;);printf(%fn,f);i=1 i=9 i=i+2f=f+1
16、.0/i关于关于for循环的说明:循环的说明:P121(1)expr1可以省略,但是其后的分号不能省略。如:可以省略,但是其后的分号不能省略。如:for(i=1;i=100;i+)sum+=i;i=1;for(;i=100;i+)sum+=i;等价于等价于关于关于for循环的说明:循环的说明:(2)若若expr2省略,会导致省略,会导致死循环死循环。如:。如:for(i=1;i+)sum+=i;等价于等价于i=1;while(1)sum+=i;i+;所以,从功能上讲:所以,从功能上讲:expr2不能省略不能省略(3)expr3可以省略,但是其前的分号不能省略。如:可以省略,但是其前的分号不能省
17、略。如:for(i=1;i=100;)sum+=i;i+;关于关于for循环的说明:循环的说明:for(i=1;i=100;i+)sum+=i;等价于等价于(4)可以同时省略可以同时省略expr1和和expr3。如:求。如:求1100的和的和i=1;for(;i=100;)sum+=i;i+;关于关于for循环的说明:循环的说明:for(i=1;i=100;i+)sum+=i;等价于等价于(4)可以同时省略可以同时省略expr1,expr2和和expr3。如:。如:while(1)printf(“%dn”,i);关于关于for循环的说明:循环的说明:for(;)printf(“%dn”,i);
18、等价于等价于(5)expr1,expr2,expr3也可以包含其他功能的表达式。也可以包含其他功能的表达式。关于关于for循环的说明:循环的说明:/求求1100的和的和i=1;for(s=0;i=100;i+)s=s+i;/求求1100的和的和for(s=0,i=1;i=100;s=s+i,i+);(6)expr1和和 expr3可以是一个简单的表达式,也可以是可以是一个简单的表达式,也可以是逗号表达式。逗号表达式。(7)C99允许在允许在for语句的语句的expr1中定义中定义变量并赋初值变量并赋初值。关于关于for循环的说明:循环的说明:/求求1100的和的和s=0;for(int i=1
19、;i=100;i+)s=s+i;expr2一般是一般是循环条件表达式循环条件表达式,也可以包含其他功能的表达式。,也可以包含其他功能的表达式。#include void main()char ch;printf(输入一串字符,回车键结束:输入一串字符,回车键结束:);ch=getchar();for(;ch!=n;)printf(%cn,ch);ch=getchar();在获取值的同时进行判断在获取值的同时进行判断for(;(ch=getchar()!=n;)printf(%cn,ch);while的的循环条件中也可以包含其他表达式循环条件中也可以包含其他表达式#include void ma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 循环结构程序设计第6 7 8次课 循环 结构 程序设计
限制150内