第05章 循环结构程序设计(2013培训).ppt
《第05章 循环结构程序设计(2013培训).ppt》由会员分享,可在线阅读,更多相关《第05章 循环结构程序设计(2013培训).ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章第五章第五章 循环结构程序设计循环结构程序设计循环结构程序设计循环结构程序设计5.1 while5.1 while语句语句5.2 do-while5.2 do-while语句语句5.3 for5.3 for语句语句5.5 5.5 breakbreak语句语句和和continue语句语句 5.6 5.6 循环的嵌套循环的嵌套 5.7 5.7 循环结构程序设计举例循环结构程序设计举例 在在C语言中可以用以下语句来实现循环:语言中可以用以下语句来实现循环:1.用用goto语句和语句和if语句构成循环;语句构成循环;2.用用while语句;语句;3.用用do-while语句;语句;4.用用
2、for语句。语句。循环循环:就是在给定的条件成立时反复执行某一就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。程序段,被反复执行的程序段称为循环体。5.1 5.1 whilewhile语句语句 第五章第五章 5.1 while语句语句1、while 语句的形式语句的形式:while(表达式)表达式)循环体;循环体;2、while 语句语句 常称常称为为“当型当型”循环语句。循环语句。真真(非零非零)表达式表达式 循环体循环体假假(零零)任意类型,非任意类型,非0 0为真,为真,0 0为假为假利用循环结构输出10个星号#include“stdio.h”Void main(
3、)int k=1;while(k=10)printf(“*”);k+;3、说明、说明:先判断表达式,后执行语句。先判断表达式,后执行语句。循环体多于一句时,用一对循环体多于一句时,用一对 括起括起。whilewhile循环结构常用于循环次数不固定,根循环结构常用于循环次数不固定,根据是否满足某个条件决定循环与否的情况。据是否满足某个条件决定循环与否的情况。第五章第五章 5.1 while语句语句编程求:编程求:S=1+2+3+1000S12100S+1SS+2SS+100S作100次加法S+iS累加器计数器流程图传统流程图N-S流程图#include“stdio.h”Void main()i=
4、1;s=0;while(i=100)s=s+i;i+;printf(“n1+2+3+100=%d”,s);循环变量的初始化计数器的初始化累加器的初始化循环控制条件累加修改循环变量循环语句的三要素输入任意整数求和如何实现?【例【例5-1】编程求】编程求 ,直到直到累加的和大于或等于累加的和大于或等于10000为止为止,输出输出n值值 第五章第五章 5.1 while语句语句i=1sum=0sum1000sum=sum+i*ii=i+1输出n=i-1和sum结束开始 第五章第五章 5.1 while语句语句#include void main()int i,sum;i=1,sum=0;while(
5、sum10000)sum+=i*i;i+;printf(“n=%d,sum=%dn”,i-1,sum);变量赋初值循环条件累加改变循环条件注意注意 第五章第五章 5.1 while语句语句表达式在判断前,必须要有明确的值。表达式在判断前,必须要有明确的值。循环体中一般有改变条件表达式的语句循环体中一般有改变条件表达式的语句,是是循环趋于结束循环趋于结束 while(while(表达式表达式)后面没有分号,且一般用于循后面没有分号,且一般用于循环次数不确定的情况环次数不确定的情况 循环体中语句的先后位置必须符合逻辑,否则循环体中语句的先后位置必须符合逻辑,否则将影响运算结果。将影响运算结果。国家
6、等级考试练习1.若有以下程序:main()int y=10;while(y-);printf(“y=%dn”,y);程序运行的结果是a.y=0 b.y=-1 c.y=1 d.死循环B2.有以下程序:main()int x=0,y=5,z=3;while(z-&+x5)y=y-1;printf(“%d,%d,%dn”,x,y,z)程序执行后输出的结果是.3,3,03.以下程序的输出结果是main()int n=12345,d;while(n!=0)d=n%10;printf(“%d”,d);n/=10;543215.2 5.2 do-whiledo-while语句语句1、do-while的形式:
7、的形式:do 循环体;循环体;while(表达式)表达式);真真(非零非零)表达式表达式 循环体循环体假假(零零)第五章第五章 5.2 do-while语句语句3、说明、说明:先先执行执行语句语句,后判断,后判断表达式表达式。第一次条件为真时,第一次条件为真时,while,do-while等价;等价;第一次条件为假时,二者不同。第一次条件为假时,二者不同。第五章第五章 5.2 do-while语句语句在在if、while语句中,表达式后面都没有分语句中,表达式后面都没有分号,而在号,而在do-while语句的表达式后面则必语句的表达式后面则必须加分号。须加分号。求s=1+2+3.+100和,利
8、用do-while实现#include“#include“stdio.hstdio.h”void main()void main()intint i=1,sum=0;i=1,sum=0;do do sum=sum=sum+isum+i;i=i+1;i=i+1;while(iwhile(i=100);=100);printf(“sumprintf(“sum=%=%dn”,sumdn”,sum););编程求编程求 ,直到直到累加的和大于或等于累加的和大于或等于10000为止。为止。(do-while实现)实现)第五章第五章 5.1 while语句语句#include void main()int
9、i,sum;i=1,sum=0;do sum+=i*i;i+;while(sum10000);printf(“n=%d,sum=%dn”,i-1,sum);变量赋初值循环条件累加改变循环条件国家等级考试练习1.有以下程序段int n,t=1,s=0;scanf(“%d”,&n);do s=s+t;t=t-2;while(t!=n);为了使程序不陷入死循环,从键盘输入的数据应该是a.任意正奇数 b.任意负偶数c.任意正偶数 d.任意负奇数D2.若变量已正确定义,有以下程序段i=0;do printf(“%d”,i);while(i+);printf(“%dn”,i);其输出结果是a.0,0 b.
10、0,1 c.1,1 d.死循环B3.执行下面程序段的结果是int x=234;do printf(“%3dn”,x-);while(!x);2345.3 5.3 forfor语句语句1、for的形式:的形式:for(初始表达式初始表达式1;条件表达式;条件表达式2;表达式;表达式3)循环体循环体;初始表达式初始表达式1:用于循环开始前为循环变量设置初始值。:用于循环开始前为循环变量设置初始值。表达式表达式2:控制循环执行的条件,决定循环次数。:控制循环执行的条件,决定循环次数。表达式表达式3:循环控制变量修改表达式。:循环控制变量修改表达式。循环体语句:循环体语句:被重复执行的语句。被重复执行
11、的语句。第五章第五章 5.3 for 语句语句表达式表达式3计算表达式计算表达式1循环体循环体判断表达式判断表达式2零零非零非零for的下一条语句的下一条语句2、执行过程、执行过程 第五章第五章 5.3 for 语句语句 for(i=1,sum=0;i=100;i+)sum=sum+i;例如:例如:它相当于以下语句:它相当于以下语句:i=1;while(i=100)sum=sum+i;i+;表达式表达式1 1;while(表达式表达式2)表达式表达式3 3;第五章第五章 5.3 for 语句语句3、说明说明三个表达式都可以是逗号表达式。三个表达式都可以是逗号表达式。三个表达式都是任选项,都可以
12、省略,但要注三个表达式都是任选项,都可以省略,但要注意省略表达式后,意省略表达式后,分号间隔符不能省略分号间隔符不能省略。第五章第五章 5.3 for 语句语句多用于循环次数确定的情况多用于循环次数确定的情况 第五章第五章 5.3 for 语句语句4.for语句中表达式省略的形式语句中表达式省略的形式(1)for语句一般形式中的语句一般形式中的“表达式表达式1”可以省可以省略;略;如:如:sum=0;i=1;for(;i100)break;sum=sum+i;第五章第五章 5.3 for 语句语句(3)表达式)表达式3也可以省略,但此时保证循环能也可以省略,但此时保证循环能正常结束如:正常结束
13、如:for(sum=0,i=1;i=100;)sum=sum+i;i+;(4)可以省略表达式可以省略表达式1和表和表达式达式3,只有表达式,只有表达式2,如:,如:i=1;sum=0;for(;i=100;)sum=sum+i;i+;i=1;sum=0;while(i100)break;sum=sum+i;i+;相当于相当于 第五章第五章 5.3 for 语句语句(6)循环体为空语句)循环体为空语句 对对for语句,循环体为空语句的一般形式为语句,循环体为空语句的一般形式为:for(表达式表达式1;表达式;表达式2;表达式;表达式3);如:如:for(sum=0,i=1;i=100;sum+=
14、i,i+);第五章第五章 5.3 for 语句语句国家等级考试练习1.有以下程序main()int i;for(i=1;i=40;i+)if(i+%5=0)if(+i%8=0)printf(“%d”,i);printf(“n”);则执行后的输出结果是a.5 b.24 c.32 d.40C2.若有以下程序段,且变量已正确的定义和赋值for(s=1.0,k=1;k=n;k+)s=s+1.0/(k*(k+1);printf(“s=%fnn”,s);请填空,使下面程序段的功能与之完全相同s=1.0;k=1;while(_)s=s+1.0/(k*(k+1);_;printf(“s=%fnn”,s);k=
15、nk+;3.有以下程序#include main()int y=9;for(;y0;y-)if(y%3=0)printf(“%d”,-y);程序运行的结果是a.741 b.963 c.852 d.875421C(1)在进入累加前先给累加器赋初值(一般为)在进入累加前先给累加器赋初值(一般为0););(2)用循环语句实现累加;)用循环语句实现累加;for(循环变量赋初值;循环条件;改变循环变量)循环变量赋初值;循环条件;改变循环变量)循环体语句;循环体语句;(3)循环体语句的设计。)循环体语句的设计。累加器当前值累加器当前值=累加器原值累加器原值+累加项当前值累加项当前值;典型例题分析典型例题分
16、析【例【例5-45-4】求累加和求累加和1+2+3+10001+2+3+1000基本方法基本方法:第五章第五章 5.3 for 语句语句属于属于“累加器累加器”类型问题。类型问题。累加器赋初值累加器赋初值参考程序:参考程序:void main()long int k,s;s=0;for(k=1;k=1000;k+)s=s+k;printf(s=%ld,s);累加累加 第五章第五章 5.3 for 语句语句例:求1-1/2+1/3-1/4+1/5-1/6.-1/100的和循环次数:确定,循环次数:确定,100100次次,i,i表示表示循环体:循环体:累加器的当前值累加器的当前值=累加器的原值累加
17、器的原值+累加项当前值累加项当前值关键:如何表示累加项当前值关键:如何表示累加项当前值找关系:找关系:t=1t=1t=-1/2t=-1/2t=1/3t=1/3.t=-1/it=-1/i由此得到:由此得到:(循环体)循环体)sign=-sign sign=-sign(符号规律)(符号规律)t=sign*1/i(t=sign*1/i(累加当前项的值)累加当前项的值)sum=sum=sum+tsum+t (累加)(累加)循环变量,累加器初值:i=1,sign=-1sum=0流程图:代码如下:代码如下:#include stdio.hvoid main()int sign=-1,i;float sum
18、=0,t;for(i=1;i=100;i+)sign=-sign;t=sign*1.0/i;sum=sum+t;printf(sum=%fn,sum);(1)给累乘器赋初值,一般为)给累乘器赋初值,一般为1;(2)用循环语句实现累乘;)用循环语句实现累乘;for(循环变量赋初值;循环条件;循环变量改变规律)循环变量赋初值;循环条件;循环变量改变规律)(3)循环体设计。)循环体设计。累乘器当前值累乘器当前值=累乘器原值累乘器原值*循环变量当前值;循环变量当前值;例例5-5:求累乘积。求累乘积。如:如:123.100基本方法基本方法:第五章第五章 5.3 for 语句语句属于属于“累乘器累乘器”类
19、型问题。类型问题。累乘器赋初值累乘器赋初值求求n!=1 2 3 n参考程序:参考程序:void main()double s=1;int k;for(k=1;k=100;k+)s=s*k;printf(s=%lf,s);累乘累乘思考思考 第五章第五章 5.3 for 语句语句整数连乘结果一定整数连乘结果一定是整数,而本例中是整数,而本例中结果数值相当大,结果数值相当大,用用longlong型都无法存型都无法存放,因此将存放累放,因此将存放累乘结果的变量乘结果的变量s s定义定义为为doubledouble型。型。求:1!+2!+3!+.+n!的和分析:循环次数确定:n(由用户输入),i作为循环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第05章 循环结构程序设计2013培训 05 循环 结构 程序设计 2013 培训
限制150内