第六章循环程序设计案例.ppt
《第六章循环程序设计案例.ppt》由会员分享,可在线阅读,更多相关《第六章循环程序设计案例.ppt(91页珍藏版)》请在课桌文档上搜索。
1、第六章 循环型程序设计,while语句 do_while语句 for语句,1、第一天晨训,班主任为了提高同学们的斗志,要求大家说一百遍“我能行!”,(第1次说:我能行!);(第2次说:我能行!);(第100次说:我能行!);,100条,2、第二天,班主任要求说10000遍“我是最棒的!”,怎么办?,一、为什么需要循环,一、为什么需要循环,(我是最棒的!);(我是最棒的!);(我是最棒的!);(我是最棒的!);(我是最棒的!);(我是最棒的!);(我是最棒的!);,int i=1;while(i=100)printf(我能行!);i+;,i=10000,我是最棒的!);,没有使用循环结构,使用w
2、hile循环,二、什么是循环,生活中的循环,打印50份试卷,10000米赛跑,旋转的车轮,循环结构的特点,锲而不舍地学习,循环结构也称重复结构:程序中反复执行的一组指令或程序段。,循环体:被反复执行的程序段。,循环变量:用来控制循环是否继续进行的变量。,二、什么是循环,三、循环语句,1、while语句,基本格式,while(条件表达式)语句;,流程图:,若表达式(条件)的值为真,则执行内嵌语句A,再判断表达式(条件),当表达式的值为假时,执行while后面的语句。,while语句的说明:,(1)while语句属当型循环,即先判断条件(表达式),再执行循环体。,(2)表达式为一条件,用于控制循环
3、是否可继续执行,故称控制表达式。,(3)语句A为内嵌式语句,是循环结构的循环体。它可以是单语句也可以是复合语句,且该语句中必须包含有对循环条件进行修改的语句。,1、while语句,while范例,在屏幕上打印5次hello,#include“stdio.h”void main()int i=1;while(i=5)printf(“hellon);i+;,初值(从什么情况开始),条件(结束值,什么情况结束),循环体(重复什么),循环体中改变循环条件的语句),例 求 1+2+100,分析:求和的过程为:,1)S=1 S=S+1 2)S=1+2 S=S+2 3)S=1+2+3 S=S+3 100)S
4、=1+2+100 S=S+100,S=0,求和表达式:,S=S+i,初值:,S=0,循环次数 i:,1100,流程图:,程序:,main()int s,i;s=0,i=1;while(i=100)s=s+i;i+;printf(s=%ldn,s);,while语句注意事项,1、计数变量要有初始值2、计数变量在执行语句中要有变化3、条件最后必须为假,来结束语句。否则 为死循环4、如果循环体中包含多个语句,应用括号括起来。如果不加括号,则while语句只负责它后面的第一个语句,5、在循环体中应该有使循环趋向结束的语句,否则会导致死循环。,如上例中的语句改写成如下形式:i=1;while(i=100
5、)s+=i;i+;,则while语句的循环体语句为:s+=i;循环变量i的值没有改变,循环不能终止,陷入死循环,下列情况,退出while循环:条件表达式不成立(为零);循环体内遇break,return,goto无限循环:while(1)循环体;,作业,1、输出110十个整数。2、求10!(10的阶层)。3、输出100内所有的偶数。4、输出100内所有的偶数个数。5、计算1100之间所有奇数的和。6、求1-100内不能被3整除的数之和。7、1100之间可以被7整除,但不能被13整除的数据的和8、1n之间所有整数的和,用户输入n,求10!(10的阶层),#include stdio.hvoid
6、main()long int i=1,s=1;while(i=10)s=s*i;i+;printf(%ld,s);,#include stdio.hvoid main()int i=1,j=0;while(i=100)if(i%2=0)j+;printf(%d,i);i+;printf(n总个数:%d,j);,例:输出100内所有的偶数及偶数个数。,作业,1100之间所有的偶数1100之间所有的奇数1100之间所有偶数的和1100之间所有奇数的和,1100之间所有的偶数(倒序输出)1100之间所有的奇数(倒序输出),从键盘输入 n值,输出n行每行6个*号。例:输入 n=4,输出的图形如下:,*
7、,#include stdio.hvoid main()int i=1,n;scanf(%d,例:求 12+22+32+42+52+1002include stdio.hvoid main()int k;long int result=0;while(k=100)result=result+k*k;k+;printf(result=%ldn,result);,拓展题:,例2:统计从键盘输入一行字符的个数。#include main()int n=0;printf(输入一个字符:n);while(getchar()!=n)n+;printf(%d,n);,输入数据,-1结束并显示求和结果。,#i
8、nclude stdio.hvoid main()int i,s=0;scanf(%d,一般形式:,do 循环体语句;while(表达式);,执行流程:,dowhile语句,执行过程:先执行一次循环体语句,然后判别表达式,当表达式的值为真时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。,特点:先执行循环体,然后判断循环条件是否成立。,dowhile范例,在屏幕上打印5次hello,#include void main()int i=1;doprintf(“hellon);i+;while(i=5);,dowhile语句特点和说明,特点:先执行循环体,后判断表达式说
9、明:至少执行一次循环体,例6.3 求1到100的和#include void main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=100);printf(%dn,sum);,运行结果:5050,举例,如果我国当前人口是13亿,假设我国的人口每年增长的速度是千分之三,问经过多少年我国人口将达到60亿?,main()int n=0;double renkou=13;while(renkou60)renkou=renkou*(1+0.003);n+;printf(%ldn,n);,作业,1、输出110十个整数。2、计算1+2+3+99+100的和3、求5!4、
10、求1100之间5的倍数的个数。,do-while、while的区别,while语句和用do-while语句的比较:在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。,运行结果:1 sum=55 再运行一次:11sum=0,运行结果:1 sum=55 再运行一次:11sum=11,for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。,for语句,一般形式:,for
11、(表达式1;表达式2;表达式3)循环体语句;,执行流程:,for语句,for语句的执行过程:(1)先求解表达式1。(2)求解表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后执行下面第(3)步。若为假,则结束循环,转到第(5)步。(3)求解表达式3。(4)转回上面第(2)步骤继续执行。(5)循环结束,执行for语句下面的一个语句,for语句最简单的形式:for(循环变量赋初值;循环条件;循环变量增值),例如:for(i=1;i=100;i+)sum=sum+i;,用for语句简单、方便。,main()int i,sum=0;for(i=1;i=100;i+)sum=sum+i;pri
12、ntf(“%d”,sum);,例:在屏幕上打印5次hello。,#include“stdio.h”void main()int i;for(i=1;i=5;i+)printf(“hellon);,例:求1100之间5的倍数的个数。,例:求12+22+32+42+52+1002include stdio.hvoid main()int k;long int sum=0;for(k=1;k=100;k+)sum=sum+k*k;printf(“sum=%ldn,sum);,例:求 n!,求阶乘的过程为:,1)S=1 S1=S0 1 2)S=12 S2=S1 2 3)S=123 S3=S2 3 n)
13、S=12 n Sn=Sn-1100,S0=1,求阶乘表达式:,S=S i,初值:,S=1,循环次数 i:,1n,循环结构程序举例,流程图:,程序:,#define N 10main()int i;long int s=1;for(i=1;i=N;i+)s=s*i;printf(s=%ldn,s);,例:求5!,例:打印输出1000以内的水仙花数(三位数)。main()int m,a,b,c;for(m=100;m1000;m+)a=m/100;b=m/10%10;c=m%10;if(m=a*a*a+b*b*b+c*c*c)printf(%6d,m);,6.5 用for 语句实现循环,说明:(1
14、)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。如 for(;i=100;i+)sum=sum+i;执行时,跳过“求解表达式1”这一步,其他不变。,6.5 用for 语句实现循环,说明:(2)如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。例如:for(i=1;i+)sum=sum+i;表达式1是一个赋值表达式,表达式2空缺。它相当于:i=1;while(1)sum=sum+1;i+;,6.5 用for 语句实现循环,说明:(3)表达式3也可以省略,但此时程序设计者应另外设法保
15、证循环能正常结束。如:for(i=1;i=100;)sum=sum+i;i+;在上面的for语句中只有表达式1和表达式2,而没有表达式3。i+的操作不放在for语句的表达式3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。,6.5 用for 语句实现循环,说明:(4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。如:for(;i=100;)while(i=100)sum=sum+i;相当于 sum=sum+i;i+;i+;在这种情况下,完全等同于while语句。可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。,6.
16、5 用for 语句实现循环,说明:(5)3个表达式都可省略,如:for(;)语句 相当于 while(1)语句 即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。,for范例,计算1+2+3+99+100的和,for范例(续),#include void main()int i;int sum=0;for(i=1;i=100;i+)sum=sum+i;printf(sum=%dn,sum);,for范例(省略表达式),#include void main()int i=1;int sum=0;for(;i=100;i+)sum+=i;printf(sum=%dn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 循环 程序设计 案例

链接地址:https://www.desk33.com/p-259736.html