《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构

上传人:E**** 文档编号:89400187 上传时间:2019-05-24 格式:PPT 页数:73 大小:672KB
返回 下载 相关 举报
《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构_第1页
第1页 / 共73页
《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构_第2页
第2页 / 共73页
《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构_第3页
第3页 / 共73页
《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构_第4页
第4页 / 共73页
《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构》由会员分享,可在线阅读,更多相关《《C程序设计简明教程》-王晓东-电子教案 第5章 循环结构(73页珍藏版)》请在金锄头文库上搜索。

1、1/71,第五章 循环结构程序设计,5.1 while语句 5.2 do-while语句 5.3 for语句 5.4 break、continue和goto语句 5.5 循环的嵌套 5.6 复合结构程序设计举例,2/71,在C语言中可以用以下语句来实现循环: 1. 用goto语句和if语句构成循环; 2. 用while语句; 3. 用do-while语句; 4. 用for语句。,循环:就是在给定的条件成立时反复执行某一程序段,被反复执行的程序段称为循环体。,3/71,5.1 while语句,真(非零),循环体,假(零),1、while 语句的形式: while (表达式) 循环体;,2 、 w

2、hile 语句 常称为“当型”循环语句。,4/71,例 用while循环求,#include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“%d“,sum); ,5/71,例 显示110的平方,#include main() int i=1; while(i=10) printf(“%d*%d=%dn“,i,i,i*i); i+; ,运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100,6/71,3、说明:,先判断表达式,

3、后执行语句。循环体有可能一次也不执行,表达式同if语句后的表达式一样,可以是任何类型的表达式。,循环体多于一句时,用一对 括起。,下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体,7/71,例:分析下列程序段的循环次数,i=1; while (i=100) putchar(*); i+;,8/71,#include “stdio.h“ void main() float x; scanf(“ %f “,【例5-1】输入一系列整数,判断其正负号,当输入0时,结束循环。,输入数据,为第一次判断做准备,whil

4、e(x!=0),判断是否结束, if(x0) printf(“ + “); else printf(“ - “); scanf(“ %f “, ,判断正负号,9/71,#include “stdio.h“ void main() char ch;int num=0; ch=getchar();,【例5-2】 统计从键盘输入的一行字符的个数(以回车键作为输入结束标记)。,while(ch!=n),判断是否输入结束, num+; ch=getchar(); ,printf(“num=%dn“,num); ,10/71,注意,表达式在判断前,必须要有明确的值。,循环体中一般有改变条件表达式的语句。,

5、while (表达式)后面没有分号。,11/71,5.2 do-while语句,1、 do-while的形式: do 循环体; while (表达式);,2、 do-while语句 常称为“直到型”循环语句。,真(非零),循环体,假(零),12/71,例 用dowhile循环求,#include main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(“%d“,sum); ,13/71,例 while和dowhile比较,#include main() int i,sum=0; scanf(“%d“, ,main() int i

6、,sum=0; scanf(“%d“, ,14/71,3、说明:,先执行语句,后判断表达式。,第一次条件为真时,while,do-while等价;第一次条件为假时,二者不同。,15/71,【例5-3】 用do-while语句编写程序统计从键盘输入的一行非空字符的个数(以回车键作为输入结束标记)。,#include “stdio.h“ void main() char ch; int num=0; ch=getchar(); do num+; ch= getchar(); while(ch!=n); printf(“num=%dn“,num); ,16/71,注意,在if、while语句中,表达

7、式后面都没有分号,而在do-while语句的表达式后面则必须加分号。,do-while和while语句相互替换时,要注意修改循环控制条件 。,17/71,5.3 for语句,1、for的形式: for (初始表达式1;条件表达式2;循环表达式3) 循环体 ; ,表达式1:用于循环开始前为循环变量设置初始值。,表达式2:控制循环执行的条件,决定循环次数。,表达式3:循环控制变量修改表达式。,循环体语句: 被重复执行的语句。,18/71,表达式3,计算表达式1,循环体,零,非零,for的下一条语句,2、执行过程,19/71,例如:,它相当于以下语句: i=1; while (i=100) sum=

8、sum+i; i+; printf(“%d“,sum);,表达式1;,while(表达式2),表达式3;,20/71,例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); ,运行结果:abcdefghij,例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); ,例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); ,例:#include main( ) int i=0; for(;i10;putchar(a+i),i+)

9、; ,21/71,main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(“%d+%d=%dn“,i,j,k); ,#include main() char c; for(;(c=getchar()!=n;) printf(“%c “,c); ,#include main() int i,c; for(i=0;(c=getchar()!=n;i+=3) printf(“%c “,i+c); ,22/71,3、 说明,三个表达式都可以是逗号表达式。,三个表达式都是任选项,都可以省略,但要注意省略表达式后,分号间隔符不能省略。,23/71,

10、1、for语句中表达式省略的形式 (1)for语句一般形式中的“表达式1”可以省略; 如: sum=0;i=1; for ( ; i=100;i+) sum=sum+i;,24/71,1、for语句中表达式省略的形式 (2)表达式2省略,即不判断循环条件,循环无终止地进行下去; 如: for(sum=0,i=1;i+) if(i100) break; sum=sum+i; ,25/71,1、for语句中表达式省略的形式 (3)表达式3也可以省略,但此时保证循环能正常结束如: for(sum=0,i=1;i=100;) sum=sum+i; i+; ,26/71,(4) 可以省略表达式1和表达式

11、3,只有表达式2,如: i=1; sum=0; for (;i=100;) sum=sum+i; i+; ,1、for语句中表达式省略的形式,i=1;sum=0; while (i=100) sum=sum+i; i+; ,相当于,27/71,while (1) 循环体; 即不设初值,不判断条件,循环变量不增值。无终止地执行循环体。,(5)三个表达式都可省略,如 for ( ; ; ) 循环体;,1、for语句中表达式省略的形式,如: sum=0,i=1; for(;) if(i100) break; sum=sum+i; i+; ,相当于,28/71,(6)循环体为空语句 对for语句,循环

12、体为空语句的一般形式为: for (表达式1;表达式2;表达式3) ; 如:for(sum=0,i=1;i=100;sum+=i, i+) ;,1、for语句中表达式省略的形式,要在显示器上复制输入的字符,输入的字符为.时, 结束循环。 输入abcdefg. 输出abcdefg. while( putchar(getchar( ) )!=. ) ;,29,(1)在进入累加前先给累加器赋初值(一般为0); (2)用循环语句实现累加; for(循环变量赋初值;循环条件;循环变量改变规律) (3)循环体语句的设计。 累加器当前值=累加器原值+循环变量当前值 ;,典型例题分析,【例5-4】 求累加和1

13、+2+3+1000,基本方法:,属于“累加器”类型问题。,30,累加器赋初值,参考程序:,void main() long int k,s;,s=0;,for(k=1;k=1000;k+) s=s+k;,printf(“ s=%ld “,s); ,累加,31,(1)给累乘器赋初值,一般为1; (2)用循环语句实现累乘; for(循环变量赋初值;循环条件;循环变量改变规律) (3)循环体设计。 累乘器当前值=累乘器原值*循环变量当前值;,例5-5: 求累乘积。 如:123.100,基本方法:,属于“累乘器”类型问题。,32,累乘器赋初值,求n!=1 2 3 n,参考程序:,void main()

14、 double s=1;,int k;,for(k=1;k=100;k+) s=s*k;,printf(“ s=%lf “,s); ,累乘,思考,33,例5-6 判断一个数是否为素数?,一个数x在2,sqrt(x)范围内没有因子,我们就称其为素数(质数),主要编程方法:循环变量终值法、标记变量法,34,#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 i

15、s a prime “ ,x); else printf(“ %d is not a prime “ ,x); ,在判断范围内无因子,程序正常终止,有因子,程序非正常终止,35,#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); ,在判断范围内无因子,程序正常终止,有因子,程序非正常终止,标记变量法,36/71,例5-7 用0-9这十个数字可以组成多少无重复的三位数?,编程方法: “枚举法” 按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能的解是否是问题的真正解

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号