C程序设计第六章ppt.ppt
C程序设计,谭浩强 著 清华大学出版社,第六章 循环控制,概述 goto语句以及用goto语句构成循环 while语句 do-while语句 for语句 循环的嵌套 几种循环的比较 break语句和continue语句 程序举例,C程序设计 第六章 循环控制,6.1 概述,C程序设计 第六章 循环控制,在给定条件成立时,反复执行某程序段,直到条件不成立为止 。,特点:,返回主菜单,6.2 goto语句以及用goto语句构成循环,C程序设计 第六章 循环控制,一般形式:,goto 语句标号;,返回主菜单,例6.1用goto语句和if语句构成循环,求。,main() int i,sum=0; i=1; loop: if(i<=100) sum=sum+i; i+; goto loop; printf(%dn,sum); ,运行程序,输出: 5050,C程序设计 第六章 循环控制,6.3 while语句,C程序设计 第六章 循环控制,一般形式:,while(表达式) 语句,返回主菜单,例6.2 用while语句求,main() int i,sum=0; i=1; while(i<=100) sum=sum+i; i+; printf(%dn,sum); ,运行程序,输出: 5050,C程序设计 第六章 循环控制,流程图,流程图,传统流程图,N-S流程图,6.4 do-while语句,一般形式,C程序设计 第六章 循环控制,do 语句 while(表达式);,返回主菜单,例6.3 用do-while语句求,main() int i,sum=0; i=1; do sum=sum+i; i+; while(i<=100) printf(%dn,sum); ,运行程序,C程序设计 第六章 循环控制,流程图,流程图,例6.4 while和do-while循环比较。,main() int sum=0,i; scanf(“%d”, ,运行程序1,C程序设计 第六章 循环控制,main() int sum=0,i; scanf(“%d”, ,(1),(2),结果比较,运行程序2,while与do-while程序结果的比较,(1),(2),6.5 for语句,C程序设计 第六章 循环控制,一般形式,for(表达式1;表达式2;表达式3) 语句,返回主菜单,for语句执行过程,1)先求解表达式1 ; 2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第3)步;若其值为假(0),则结束循环,转到第5)步 ; 3)求解表达式3 ; 4)转回上面第2)步继续执行 ; 5)循环结束,执行for语句下面的一个语句。,for语句说明,1)for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项, 即可以缺省,但“;”不能缺省。,2)省略了“表达式1(循环变量赋初值)”, 表示不对循环控制变量赋初值。,3)省略了“表达式2(循环条件)”, 则不做其它处理时便成为死循环。,4)省略了“表达式3(循环变量增量)”, 则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。,5)可以省略“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。,for(i=1;i<=100;) sum=sum+i; i+;,for(;i<=100;) 相当于 while(i<=100) sum=sum+i; sum=sum+i; i+; i+;,for语句说明,6)3个表达式都可以省略。,7)表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。,8)表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。,9)表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。,for(sum=0;i<=100;i+) sum=sum+i;,for(sum=0,i=1;i<=100;i+)sum=sum+i;,for(;(c=getchar()!=n;) printf(“%c”,c);,6.6 循环的嵌套,C程序设计 第六章 循环控制,定义: 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。,返回主菜单,6.7 几种循环的比较,C程序设计 第六章 循环控制,1)四种循环都可以用来处理同一个问题,一般可以互相代替。但一般不提倡用goto型循环。,2)while和do-while循环,循环体中应包括使循环趋于结束的语句。for语句功能最强。,3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化。,返回主菜单,6.8 break语句和continue语句,C程序设计 第六章 循环控制,break语句,continue语句,不能用于循环语句和switch语句之外的任何其他语句,跳过循环体中剩余的语句而强行执行下一次循环,break语句和continue语句的区别,返回主菜单,例6.5,break语句和continue语句的区别,break语句和continue语句的区别,例6.5把100至200之间的不能被3整除的数输出。,main() int n; for(n=100;n<=200;n+) if(n%3=0) continue; printf(%d ,n); ,运行程序,C程序设计 第六章 循环控制,6.9 程序举例,C程序设计 第六章 循环控制,例6.6,例6.7,例6.8,返回主菜单,例6.9,例6.10,例6.6用公式 求。,#include main() int s; float n,t,pi; t=1,pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); ,运行程序,C程序设计 第六章 循环控制,C程序设计 第六章 循环控制,例6.7 求Fibonacci数列40个数,这个数列有如下特点:第1,2两个数为1,1.从第3个数开始,该数是其前面两个数之和。即: F1=1(n=1) F2=1(n=2) Fn=Fn-1+ Fn-2(n=3),main() long int f1,f2; int i; f1=1;f2=1; for(i=1;i<=20;i+) printf(“%12ld%12ld”,f1,f2); if(i%2=0) printf(“n”); f1=f1+f2; f2=f2+f1; ,运行程序,例6.8 判断m是否素数 。,#include main() int m,i,k; scanf(“%d”, ,运行程序,C程序设计 第六章 循环控制,C程序设计 第六章 循环控制,例6.9 求100至200间的全部素数。,#include main() int m,i,k,n=0; for(m=101;m=k+1) printf(“%d”,m); n=n+1; if(n%n=0)printf(“n”); printf(“n”); ,运行程序,C程序设计 第六章 循环控制,例6.10 译密码。为使电文保密,往往按一定规律将其转 换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码。,include main() char c; while(c=getchar()!=n) if(c=a ,运行程序,The end,