第六章:循环控制.ppt
《第六章:循环控制.ppt》由会员分享,可在线阅读,更多相关《第六章:循环控制.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 程序设计中程序设计中,经常需要重复相同的计经常需要重复相同的计算或处理过程,由此形成了循环结构。算或处理过程,由此形成了循环结构。循环结构是程序中可重复执行的语循环结构是程序中可重复执行的语句序列句序列 。1用用 goto 语句和语句和 if 语句构造循环语句构造循环 C语言中,实现循环的方式:goto ifwhile 2用用 while 语句语句do_while 3用用 do-while 语句语句for4用用 for 语句语句 设S1,S2,S3 为三个连续的语句序列,下图中S2为循环结构中的语句 部分。设S2可重复 0n 次(n0),示意图如下:S1S3S2(0次次)(n(n次次)S1S
2、3S2(0次)S1 S3 S2 执行执行 0 次次S1S3S2S1 S3 S2 S2执行执行1次次 S1 S2 S3 S1 S2 S3(1次)(1次)S1S3S2 S2 执行执行 2次次 S1 S2 S3S2 1.一般形式一般形式:goto 语句标号语句标号;2.2.几点说明几点说明 :1)1)语句标号命名名规则语句标号命名名规则与变量名命名与变量名命名规则相同规则相同 ;2)2)不用能整数做语句标号不用能整数做语句标号;3)3)不提倡使用不提倡使用gotogoto语句语句.1 1形式形式 :whilewhile(表达式)语句;表达式)语句;2 2作用作用 :实现:实现“当型当型”循环,即当表
3、达循环,即当表达式成立(非式成立(非0 0)时,执行语句,否则不执)时,执行语句,否则不执行语句。行语句。3 3特点特点 :先判断表达式,后执行语句。:先判断表达式,后执行语句。通常我们称通常我们称该内嵌语句该内嵌语句为循环体为循环体循环体语句循环体语句条件表达式条件表达式循环体循环体语句语句条件表达式条件表达式whilewhile语句的图形表示语句的图形表示真假whilewhile的后续语句的后续语句例例1:用:用 while 语句实现语句实现 1+2+3+100分析分析:1.用变量用变量sum存放和存放和 2.用用i表示累加变量表示累加变量 3.循环条件循环条件i100程序流程图:程序流程
4、图:开始开始初始化初始化 sum=0;i=1;sum=0;i=1;判断:i=100?sum=sum+i;i=i+1;输出 sum结束真假真sum=sum+i;i=i+1;判断:判断:i=100?sum=0;i=1;输出输出sum的值的值i=100?sum=sum+i;i=i+1;N-S N-S 流程流程图表示图表示main()int sum=0,i=1;while (i=100)sum=sum+i;i+;printf(sum%dn,sum);循环体循环体语句语句循环条件循环条件程序程序:i+;sum+=i;i=0;100例例 2求求1到到100之间的奇数之和,偶数之积之间的奇数之和,偶数之积。
5、sum=0 mul=1 i=100 i能整除2?yesnomul=mul*isum=sum+i输出sum,muli+;i=1main()double mul=1;int i=1,sum=0;while (i=100)if(i%2=0)mul=mul*i;else sum=sum+i;i+;printf(sum=%dn,sum);printf(mul=%en,mul);main()int i,k1,k2,k;i=1;k1=1;k2=2;while (i=5)k=k1+k2;k1=k2;k2=k;i+;printf(%5d,k);例例 3读程序练习:读程序练习:3 5 8 13 2112k1 k2
6、 k 3输出:输出:32353558588138131321132121 1 1形式:形式:do do 语句语句 whilewhile(表达式);表达式);2 2作用:实现作用:实现“直到型直到型”循环循环3 3特点:先执行语句,后判断条件,特点:先执行语句,后判断条件,直到表达式不成立为止。直到表达式不成立为止。循环体语句循环体语句条件表达式条件表达式循环体循环体语句语句 !(!(条件表达式条件表达式)do_whiledo_while语句的流程图语句的流程图真真假假main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=1e-3);printf(sum=%
7、fn,sum);whilewhilewhilewhile循环与循环与循环与循环与do_whiledo_whiledo_whiledo_while循环小结循环小结循环小结循环小结:1.1.1.1.循环体内必须有使循环趋于终止的条件循环体内必须有使循环趋于终止的条件循环体内必须有使循环趋于终止的条件循环体内必须有使循环趋于终止的条件 while (i=100)sum=sum+i;i+;do sum=sum+i;i+;while (i=100)2.2.2.2.注意循环初值与循环条件注意循环初值与循环条件注意循环初值与循环条件注意循环初值与循环条件i=1;while (i=100)sum=sum+i;
8、i+;i=0;while (i100)i+;sum=sum+i;3.3.do_while do_while 的循环体至少执行一的循环体至少执行一 次次,4.4.while while的循环体可能一次也不执的循环体可能一次也不执 行。行。4.4.在循环体至少执行一次的前提下,在循环体至少执行一次的前提下,do_whiledo_while与与while while 循环等价。循环等价。例例3:求求 n!main()int i=1,n;double m=1;scanf(%d,&n);while(i=n)m=m*i;i+;printf(%10.0fn,m);main()int i=1,n;double
9、 m=1;scanf(%d,&n);do m=m*i;i+;while(i=n);printf(%10.0fn,m);例例4:求:求8个数中的最大值,最小值个数中的最大值,最小值main()int amax,amin,t,n=1;scanf(%d,&t);amax=amin=t;while(namax)amax=t;if(tamin)amin=t;n+;printf(amax=%d amin=%dn,amax,amin);main()int a,evenmul=1,oddsum=0;scanf(%d,&a);while(a!=-1)if(a%2=0)evenmul=evenmul*a;else
10、 oddsum=oddsum+a;scanf(%d,&a);printf(evenmul=%d,oddsum=%dn,evenmul,oddsum);例例5:输入一批正整数,用:输入一批正整数,用1做终止标记,求其中的做终止标记,求其中的偶数积,奇数和。偶数积,奇数和。1.一般形式:一般形式:for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句 for 的循环体的循环体括号不可少括号不可少分号不可少分号不可少2.2.执行过程执行过程 :1 1)计算表达式)计算表达式1 1,给循环变量,给循环变量赋初值赋初值 ;2 2)计算表达式)计算表达式2 2,判,判循环条件循环条件是否成立是否
11、成立 :当表达式当表达式2 2成立成立时(非时(非0 0),转),转3 3););当表达式当表达式2 2不成立不成立时(时(0 0),转),转5 5););3 3)执行)执行语句语句 ;4 4)计算表达式)计算表达式3 3,循环变量,循环变量增值增值 ,返回返回2)2);5 5)结束循环)结束循环 。for (i=1;i=10;i+)sum=sum+i;求表达式求表达式1 1判表达式判表达式2 2语句语句求表达式求表达式3 3forfor语句语句的下一的下一个语句个语句 真真假假forfor语句执行语句执行过程示意图:过程示意图:3.3.说明说明 :1 1)表达式)表达式1 1可省,但分号不能
12、省可省,但分号不能省 ;2 2)若表达式)若表达式2 2省略,循环条件永远为真省略,循环条件永远为真 ;3 3)表达式)表达式3 3也可省略,但应设法保证循环正常也可省略,但应设法保证循环正常结束结束 ;如如 :for(sum=0,i=1;i=100;)for(sum=0,i=1;i=100;)sum=sum+i;i+;sum=sum+i;i+;4 4)可只给循环条件,这时与可只给循环条件,这时与 while while 语句等同语句等同 ;如:;如:i=1;i=1;i=1;i=1;for(;i=100;)while(i=100)for(;i=100;)while(i=100)sum=sum+
13、i;sum=sum+i;sum=sum+i;sum=sum+i;i+;i+;i+;i+;5 5)三个表达式都可省)三个表达式都可省 ;如;如 for(;)for(;)相当于相当于 while(1)while(1)6 6)表达式表达式1 1和表达式和表达式3 3可以是逗号表达式可以是逗号表达式 ;7 7)表达式)表达式2 2一般为关系表达式或逻辑表达式,一般为关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其但也可以是数值表达式或字符表达式,只要其值为非零就执行循环体值为非零就执行循环体 。如如 :for(i=0for(i=0;(c=(c=getchargetchar()!=n()
14、!=n;i+=c)i+=c);for(for(;(c=(c=getchargetchar()!=n()!=n;)printf(%c,cprintf(%c,c););8)8)注意循环结束时,循环变量的值。注意循环结束时,循环变量的值。for(i=0;i1;i-).printf(i=%dn,i);i=12i=1变量设定:变量设定:s 存放累加和;存放累加和;t 存放每项的值;存放每项的值;i 为循环次数;为循环次数;算法分析:算法分析:1.循环累加,用循环累加,用 s=s+t;或或 s+=t;2.每项可递推计算,每项可递推计算,t=t*2;或或 t*=2;3.初值初值 s=1,t=1,循环循环63
15、次。次。例例 1编写求编写求 20+21+22+2 3+263 的程序的程序。开始开始s=1,t=1;i=1;i=63t=t*2;s=s+t;i+;输出输出 s s结束结束真真假假main()int i;float s=1,t=1;for(i=1;i=63;i+)t*=2;s+=t;printf(s=%fn,s);s=s+pow(2,i);#include math.h;main()float s=0,t=1;int i;for (i=1;i=20;i+)t=t*i;s=s+t;printf(%en,s);例例 2求求1!+2!+3!+.+20!注注:1.:1.尽量避免用实型变量控制循环次数。
16、尽量避免用实型变量控制循环次数。main()float x;for(x=1;x=1.5;x=x+0.1)printf(%4.1fn,x);printf(x=%4.1fn,x);main()int x;for(x=10;x=15;x=x+1)printf(%dn,x);printf(x=%dn,x);运行结果:运行结果:1.0 1.1 1.2 1.3 1.4x=1.5运行结果:运行结果:10 11 12 13 14 15 x=162.2.在循环体内尽量避免改变循环变量的值在循环体内尽量避免改变循环变量的值,否则否则将难以予知循环次数。将难以予知循环次数。main()int i;for(i=1;i
17、=20;i+)i=i+5;printf(%5d,i);printf(n);运行结果为:运行结果为:6 12 18 24 概念概念 :一个循环体内又包含另一个完:一个循环体内又包含另一个完整的循环结构整的循环结构 。说明说明 :1 1)嵌套可以是多层的)嵌套可以是多层的 ;2 2)一个循环体必须完完整整嵌套在另)一个循环体必须完完整整嵌套在另一个循环体内。一个循环体内。注意:不能出现循环体交叉注意:不能出现循环体交叉 ;3 3)三种循环可以互相嵌套)三种循环可以互相嵌套 。算法算法1分析:分析:设该三位数为设该三位数为 i(100i999),与之对应的与之对应的个位、十位、百位数字分别为个位、十
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 循环 控制
限制150内