第五讲循环结构程序设计.ppt
《第五讲循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第五讲循环结构程序设计.ppt(62页珍藏版)》请在三一办公上搜索。
1、第五讲 循环结构程序设计,5.1 while语句5.2 do-while语句5.3 for语句5.4 goto语句以及用goto语句构成的循环5.5 break语句和continue语句 5.6 循环的嵌套 5.7 循环结构程序设计举例,在C语言中可以用以下语句来实现循环:1.用goto语句和if语句构成循环;2.用while语句;3.用do-while语句;4.用for语句。,循环:就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。,S=1+2+3+100,0,S,1,2,100,S+1,S,S+2,S,S+100,S,作100次加法,S+i,S,累加器,计数器,5.1
2、 while语句,真(非零),循环体,假(零),1、while 语句的形式:while(表达式)循环体;,2、while 语句 常称为“当型”循环语句。,3、说明:,先判断表达式,后执行语句。,表达式同if语句后的表达式一样,可以是任何类型的表达式。,循环体多于一句时,用一对 括起。,while循环结构常用于循环次数不固定,根据是否满足某个条件决定循环与否的情况。,i=1;s=0;while(i=100)s=s+i;i+;printf(“n1+2+3+100=%d”,s);,循环变量的初始化计数器的初始化,累加器的初始化,循环控制条件,累加,修改循环变量,循环语句的三要素,循环次数固定的循环语
3、句,#include stdio.h void main()float x;scanf(%f,【例5-1】输入一系列整数,判断其正负号,当输入0时,结束循环。,输入数据,为第一次判断做准备,while(x!=0),判断是否结束,if(x0)printf(+);else printf(-);scanf(%f,判断正负号,#include stdio.h void main()char ch;int num=0;ch=getchar();,【例5-2】统计从键盘输入的一行字符的个数(以回车键作为输入结束标记)。,while(ch!=n),判断是否输入结束,num+;ch=getchar();,pr
4、intf(num=%dn,num);,注意,表达式在判断前,必须要有明确的值。,循环体中一般有改变条件表达式的语句。,while(表达式)后面没有分号。,5.2 do-while语句,1、do-while的形式:do 循环体;while(表达式);,2、do-while语句 常称为“直到型”循环语句。,真(非零),循环体,假(零),3、说明:,先执行语句,后判断表达式。,第一次条件为真时,while,do-while等价;第一次条件为假时,二者不同。,【例5-3】用do-while语句编写程序统计从键盘输入的一行非空字符的个数(以回车键作为输入结束标记)。,#include stdio.hvo
5、id main()char ch;int num=0;ch=getchar();do num+;ch=getchar();while(ch!=n);printf(num=%dn,num);,注意,在if、while语句中,表达式后面都没有分号,而在do-while语句的表达式后面则必须加分号。,do-while和while语句相互替换时,要注意修改循环控制条件。,5.3 for语句,1、for的形式:for(初始表达式1;条件表达式2;循环表达式3)循环体;,表达式1:用于循环开始前为循环变量设置初始值。,表达式2:控制循环执行的条件,决定循环次数。,表达式3:循环控制变量修改表达式。,循环体
6、语句:被重复执行的语句。,表达式3,计算表达式1,循环体,零,非零,for的下一条语句,2、执行过程,for(i=1;i=100;i+)sum=sum+i;,例如:,它相当于以下语句:i=1;while(i=100)sum=sum+i;i+;,表达式1;,while(表达式2),表达式3;,3、说明,三个表达式都可以是逗号表达式。,三个表达式都是任选项,都可以省略,但要注意省略表达式后,分号间隔符不能省略。,4.for语句中表达式省略的形式,(1)for语句一般形式中的“表达式1”可以省略;如:sum=0;i=1;for(;i=100;i+)sum=sum+i;,(2)表达式2省略,即不判断循
7、环条件,循环无终止地进行下去;如:for(sum=0,i=1;i+)if(i100)break;sum=sum+i;,(3)表达式3也可以省略,但此时保证循环能正常结束如: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(i=100)sum=sum+i;i+;,相当于,while(1)循环体;即不设初值,不判断条件,循环变量不增值。无终止地执行循环体。,(5)三个表达式都可省略,如 for(;)循环体;,如:sum=0,
8、i=1;for(;)if(i100)break;sum=sum+i;i+;,相当于,(6)循环体为空语句 对for语句,循环体为空语句的一般形式为:for(表达式1;表达式2;表达式3);如:for(sum=0,i=1;i=100;sum+=i,i+);,要在显示器上复制输入的字符,输入的字符为.时,结束循环。输入abcdefg.输出abcdefg.while(putchar(getchar()!=.);,(1)在进入累加前先给累加器赋初值(一般为0);(2)用循环语句实现累加;for(循环变量赋初值;循环条件;循环变量改变规律)(3)循环体语句的设计。累加器当前值=累加器原值+循环变量当前值
9、;,典型例题分析,【例5-4】求累加和1+2+3+1000,基本方法:,属于“累加器”类型问题。,累加器赋初值,求偶数和2+4+6+100,参考程序:,void main()long int k,s;,s=0;,for(k=1;k=1000;k+)s=s+k;,printf(s=%ld,s);,累加,思考,(1)给累乘器赋初值,一般为1;(2)用循环语句实现累乘;for(循环变量赋初值;循环条件;循环变量改变规律)(3)循环体设计。累乘器当前值=累乘器原值*循环变量当前值;,例5-5:求累乘积。如:123.100,基本方法:,属于“累乘器”类型问题。,累乘器赋初值,求n!=1 2 3 n,参考
10、程序:,void main()double s=1;,int k;,for(k=1;k=100;k+)s=s*k;,printf(s=%lf,s);,累乘,思考,例5-6 判断一个数是否为素数?,一个数x在2,sqrt(x)范围内没有因子,我们就称其为素数(质数),主要编程方法:循环变量终值法、标记变量法,#include math.h void main()int x,k;scanf(%d,排除法:如果有因子,不再往下判断是否是素数,循环变量终值法,for(k=2;k=sqrt(x);k+)if(x%k=0)break;,if(ksqrt(x)printf(%d is a prime,x);
11、else printf(%d is not a prime,x);,在判断范围内无因子,程序正常终止,有因子,程序非正常终止,#include math.h void main()int x,k,f=1;scanf(%d,排除法:如果有因子,不再往下判断是否是素数,for(k=2;k=sqrt(x);k+)if(x%k=0)f=0;break;,if(f=1)printf(%d is a prime,x);else printf(%d is not a prime,x);,在判断范围内无因子,程序正常终止,有因子,程序非正常终止,标记变量法,例5-7 用0-9这十个数字可以组成多少无重复的三位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 循环 结构 程序设计
链接地址:https://www.31ppt.com/p-5992030.html