《循环体程序设计》PPT课件.ppt
《《循环体程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《循环体程序设计》PPT课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6 6 循环语句循环语句l提出问题提出问题提问:提问:打印打印10行行“*”,怎么编程,怎么编程?回答:回答:写写10个个printf(“*”);语句。语句。提问:提问:打印打印500行,怎么编程?行,怎么编程?回答:回答:这个,嗯这个,嗯?不会让我写不会让我写500个个.注意:注意:让我们换一个角度来看待这些问题,让我们换一个角度来看待这些问题,以上问题实质是:将以上问题实质是:将p printfrintf函数重复执行函数重复执行N N遍。遍。printf(“*”);26 6 循环语句循环语句l循环循环 反复执行同一段程序,直到满足反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。
2、一定的条件后才停止执行该段程序。lC语言中控制循环的语句:语言中控制循环的语句:while do-while do-while for for36-1 6-1 whilewhile语句语句lwhile语句格式语句格式while(while(表达式表达式)语句语句;说明:语句说明:语句部分可以是部分可以是简单语句简单语句,也可,也可以是以是复合语句复合语句。lwhilewhile语句的执行流程语句的执行流程表达式表达式?执行语句语句成立成立不成立不成立执行while循环之后的语句循环控制条件循环控制条件循环体循环体46-1 6-1 whilewhile语句语句-实例实例l例例:从键盘输入从键盘输
3、入1010个整数,求这个整数,求这1010个整数的和。个整数的和。#include include main()main()int count,num,total;int count,num,total;/*count:/*count:计数器,计数器,num:num:输入的整数输入的整数*/*/count=0;count=0;total=0;total=0;/*total:/*total:存放累加和存放累加和*/*/whilewhile(count10count10)/*/*循环控制条件循环控制条件*/*/count+;count+;/*/*循环体循环体*/*/printf(Enter the
4、 No.%d=,count);printf(Enter the No.%d=,count);scanf(%d,&num);scanf(%d,&num);total+=num;total+=num;/*/*计算累加和计算累加和*/*/printf(Total=%dn,total);printf(Total=%dn,total);56-1 6-1 whilewhile语句语句-实例实例l例:例:分析程序的运行结果分析程序的运行结果#include include main()main()int n=0;int n=0;while(n3)while(n3)printf(”n is%dn”,n);pr
5、intf(”n is%dn”,n);n+;n+;printf(”Thats all this program printf(”Thats all this program does.n”);does.n”);结果:结果:程序将不停的打印程序将不停的打印“n is 0”,直至终止程序直至终止程序l无法正常终止的程序,称为无法正常终止的程序,称为“死循环死循环”。结论:结论:在在while语句语句循环体循环体中,一定要有能够中,一定要有能够对循环控制对循环控制条件产生影响的语句条件产生影响的语句。避免出现。避免出现“死循环死循环”现象。现象。66-1 6-1 whilewhile语句语句-实例实例
6、l例例1:分析下列程序段分析下列程序段 index=1;index=1;while(while(index index 5)5)printf(”Good morning!n”);printf(”Good morning!n”);分析:分析:程序段将无限制打印字符串。因为循环中没有任何程序段将无限制打印字符串。因为循环中没有任何语句可以改变循环控制变量语句可以改变循环控制变量index的初值的初值1l例例2:分析下列程序段分析下列程序段 index=1;index=1;while(while(-index index 5)5)printf(”Good morning!n”);printf(”Go
7、od morning!n”);分析:分析:仍有问题,程序改变了仍有问题,程序改变了index的值,但方向错了。的值,但方向错了。在在index达到系统能够处理的最大负数时,将会产生达到系统能够处理的最大负数时,将会产生下溢而终止程序。下溢而终止程序。结论:结论:循环体中必须有能够使循环循环体中必须有能够使循环正常停止正常停止的条件。的条件。76-1 6-1 whilewhile语句语句-实例实例l【例【例6.16.1】求】求mainmain()()int i int i,sumsum0;0;i=1 i=1;while while(i i100100)sum=sum+i sum=sum+i;i=
8、i+1 i=i+1;printf printf(“d”d”,sumsum););86-1 6-1 whilewhile语句语句-实例实例l【例【例6.26.2】求前】求前n n个数的平方的和个数的平方的和:根据上例写出程序如下:根据上例写出程序如下:mainmain()()int i=1 int i=1,sum=0sum=0,n n;scanf(“%d”,&n)scanf(“%d”,&n);while while(i=ni=n)sum=sum+i*i sum=sum+i*i;i+i+;printf printf(“i=%d,n=%d,sum=%dn”“i=%d,n=%d,sum=%dn”,i,
9、n,sumi,n,sum););96-1 6-1 whilewhile语句语句-实例实例 该该例也可以写成如下:例也可以写成如下:mainmain()()int i=1 int i=1,sumsum0 0,n n;scanf(“%d”,&n)scanf(“%d”,&n);while while(n n)sum=sum+n*n sum=sum+n*n;n-n-;printf printf(“i=%d,n=%d,sum=%dn”“i=%d,n=%d,sum=%dn”,i,n,sumi,n,sum););106-1 6-1 whilewhile语句语句-实例实例l【例【例6.36.3】将输入的字符原
10、样输出,以】将输入的字符原样输出,以“#”“#”号结束。号结束。#include include main()main()char c char c;c=getchar()c=getchar();while(c!=#)while(c!=#)putchar putchar(c c););c=getchar()c=getchar();116-1 6-1 whilewhile语句语句-实例实例上述程序也可以写为:上述程序也可以写为:#include“”#include“”main()main()char c char c;while(c=getchar()!=#)while(c=getchar()!
11、=#)putchar putchar(c c););126-1 6-1 whilewhile语句语句-实例实例【例【例6.46.4】统计从键盘输入的以】统计从键盘输入的以nn结束的字符中英文结束的字符中英文字母的个数。字母的个数。#include#include main()main()int n=0;int n=0;char c;char c;while(c=getchar()!=n)while(c=getchar()!=n)if(c=a&c=A&c=a&c=A&c=Z)n+;n+;printf(%dn,n);printf(%dn,n);Ab2!*ABAb2!*AB 4 4136-1 6-1
12、 whilewhile语句语句-实例实例lwhile使用使用注意注意 1.1.while(while(0 0).).由于循环的条件表达式恒由于循环的条件表达式恒等于等于0 0,循环体永远也不会执行。,循环体永远也不会执行。2.2.while(while(1 1).).由于循环的条件表达式恒由于循环的条件表达式恒等于等于1 1,所以不可能通过循环控制条件来结束循环体,所以不可能通过循环控制条件来结束循环体的执行,称为的执行,称为“死循环死循环”。3.3.为了保证循环正常运行,应该特别注意:为了保证循环正常运行,应该特别注意:循环控制条件循环控制条件 控制条件的初始状态(初始值)控制条件的初始状态
13、(初始值)循环体内部对控制条件的影响循环体内部对控制条件的影响146-2 6-2 do-whiledo-while语句语句ldo-while语句格式语句格式 dodo 语句语句 while (while (表达式表达式 );ldo-whiledo-while语句的执行流程语句的执行流程表达式表达式?执行语句语句成立成立不成立不成立执行while子句之后的语句循环控制条件循环控制条件循环体循环体156-2 6-2 do-whiledo-while语句语句ldo-while语句特点语句特点do-whiledo-while与与whilewhile的最大区别:的最大区别:do-whiledo-whil
14、e语句语句先执行循环体先执行循环体然后然后再判断再判断循环循环控制条件控制条件,而,而whilewhile却是先判断条件之后再执却是先判断条件之后再执行循环体。行循环体。使用使用do-whiledo-while构成的循环,循环体构成的循环,循环体至少要执至少要执行一次行一次;而采用;而采用whilewhile构成的循环,循环体有构成的循环,循环体有可能一次也不会执行。可能一次也不会执行。166-2 6-2 do-whiledo-while语句语句-实例实例l【例【例6.66.6】用】用do-whiledo-while语句求语句求main()main()int i,sum=0;int i,sum
15、=0;i=1;i=1;do do sum=sum+i;sum=sum+i;i+;i+;while(i=100);while(i=100);printf(“%d”,sum);printf(“%d”,sum);17/*/*ex4-11-1.c*/ex4-11-1.c*/#include#include main()main()int i,sum=0;int i,sum=0;scanf(%d,&i);scanf(%d,&i);do do sum+=i;sum+=i;i+;i+;while(i=10);while(i=10);printf(“sum=%d,sum);printf(“sum=%d,sum
16、);/*/*ex4-11-2.c*/ex4-11-2.c*/#include#include main()main()int i,sum=0;int i,sum=0;scanf(%d,&i);scanf(%d,&i);while(i=10)while(i=10)sum+=i;sum+=i;i+;i+;printf(“sum=%d,sum);printf(“sum=%d,sum);1 sum=55sum=551 sum=55sum=5511 sum=11sum=1111 sum=0sum=06-2 6-2 whilewhile和和do whiledo while比较比较186-2 6-2 do-
17、whiledo-while语句语句-实例实例【例【例6.86.8】输入一个整数,计算它的位数】输入一个整数,计算它的位数.并反向并反向输出输出.main()main()long num long num;int count=0 int count=0;printf(“printf(“输入一个整数:输入一个整数:”)”);scanf(“%ld”scanf(“%ld”,&num)&num);do printf(“%d”do printf(“%d”,num%10)num%10);num=num/10 num=num/10;count+count+;while(num)while(num);print
18、f(“printf(“该整数是该整数是%d d 位数位数.”,.”,count)count);196-3 6-3 forfor语句语句lfor语句格式语句格式for(for(表达式表达式1 1;表达式表达式2 2;表达式表达式3 3)语句;语句;lforfor语句的执行流程语句的执行流程循环初始条件循环初始条件循环控制条件循环控制条件表达式表达式2?执行语句语句成立成立不成立不成立执行for循环之后的语句执行表达式表达式3执行表达式表达式1循环体循环体forfor语句等价于下列语句:语句等价于下列语句:表达式表达式1 1;while while(表达式表达式2 2)语句语句;表达式表达式3 3
19、;206-3 6-3 forfor语句语句-实例实例l例例:求一个数的阶乘。求一个数的阶乘。#include include main()main()long int jc=1;long int jc=1;int i,n;int i,n;scanf(“%d”,&n);scanf(“%d”,&n);forfor (i=1i=1;i=ni=n;i+i+)jc=jc*i;jc=jc*i;printf(%d!=%ldn,n,jc);printf(%d!=%ldn,n,jc);lforfor语句最常用的形式语句最常用的形式for for(初值初值;控制条件控制条件;增量增量)语句;语句;3 3 3!=6
20、=6216-3 6-3 forfor语句语句lforfor语句的变化形式语句的变化形式forfor语句中的三个表达式中的任意一个都是可以省略语句中的三个表达式中的任意一个都是可以省略的,但是的,但是分号分号不能省略。不能省略。1.1.省略表达式省略表达式2 2,则:,则:forfor(表达式表达式1 1;表达式;表达式3 3)就形成了一个就形成了一个死循环死循环。2.2.省略表达式省略表达式1 1和表达式和表达式3 3,则:,则:forfor(;(;表达式表达式2 2;);)就等同于:就等同于:whilewhile(表达式表达式 )据此结论:所有用据此结论:所有用whilewhile语句语句实
21、现的循环都可以用实现的循环都可以用forfor语句语句实现。实现。3.3.表达式表达式1 1、2 2、3 3全省略全省略,则:,则:forfor (;)(;)就等同于:就等同于:whilewhile (1)(1)226-3 6-3 forfor语句语句-实例实例【例【例6.96.9】输输入入2020个个0 09 9的数字字符,的数字字符,计计算有多少奇数,偶数和零。算有多少奇数,偶数和零。#define M 20main()int i,k,n1=0,n2=0,n3=0;char ch;printf(“输入数字字符输入数字字符20个:个:n”);for(k=1;k=M;k+)scanf(“%c”
22、,&ch);i=ch-0;if(i=0)n3+;/*零零*/else if(i%2=0)n1+;/*偶数偶数*/else n2+;/*奇数奇数*/printf(“有有%2d 个偶数个偶数,%2d 个奇数个奇数,%2d 个零个零”,n1,n2,n3);23外层循环可包含两个以上内循环,但不能相互交叉l循环的嵌套循环的嵌套三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限(1)(1)(1)(1)while()while()while()while()while()while()while()while().(2)(2)(2)(2)dodododo do do do do while();whi
23、le();while();while();.while();while();while();while();(3)(3)(3)(3)while()while()while()while()do do do do while()while()while()while();.(4)(4)(4)(4)for(;)for(;)for(;)for(;)do do do do while();while();while();while();while()while()while()while().内循环内循环外循环外循环()for(;)for(;)for(;)for(;)dodododo while()w
24、hile()while()while()while();while();while();while();.相互交叉相互交叉6-4 6-4 循环循环的嵌套的嵌套246-4 6-4 循环循环的嵌套的嵌套【例【例6.23】打印九九表。】打印九九表。main()main()int i,j;int i,j;for(i=1;i10;i+)for(i=1;i10;i+)for(j=1;j=i;j+)for(j=1;j=i;j+)printf(%d*%d=%dt,j,i,i*j);printf(%d*%d=%dt,j,i,i*j);printf(n);printf(n);256-4 6-4 循环循环的嵌套的嵌
25、套【例【例6.106.10】写出运行结果。】写出运行结果。main()main()int i,j,k;int i,j,k;printf(i j kn);printf(i j kn);for(i=0;i2;i+)for(i=0;i2;i+)for(j=0;j2;j+)for(j=0;j2;j+)for(k=0;k2;k+)for(k=0;k=100;j-)(j=999;j=100;j-)if if(n%j(n%j=0)/*0)/*若能够整除若能够整除j j,则则j j是约数是约数*/*/printf(”3 digits in%ld=%dn”,n,j);printf(”3 digits in%ld
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环体程序设计 循环体 程序设计 PPT 课件
限制150内