第六章循环程序设计案例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第六章循环型程序设计while语句do_while语句for语句1、第一天晨训,班主任为了提高同学们的斗志,要求大家说一百遍“我能行!”(第1次说:我能行!);(第2次说:我能行!);……(第100次说:我能行!);100条2、第二天,班主任要求说10000遍“我是最棒的!”,怎么办?一、为什么需要循环一、为什么需要循环(我是最棒的!);(我是最棒的!);(我是最棒的!);(我是最棒的!);(我是最棒的!);(我是最棒的!);……(我是最棒的!);inti=1;while(i=100){printf(我能行!);i++;}i=10000我是最棒的!);没有使用循环结构使用while循环二、什么是循环生活中的循环打印50份试卷10000米赛跑旋转的车轮循环结构的特点循环结构循环条件循环操作锲而不舍地学习循环结构也称重复结构:程序中反复执行的一组指令或程序段。循环体:被反复执行的程序段。循环变量:用来控制循环是否继续进行的变量。二、什么是循环for循环while循环do...while循环三、循环语句1、while语句基本格式while(条件表达式){语句;}非0(真)0(假)语句A表达式流程图:若表达式(条件)的值为真,则执行内嵌语句A,再判断表达式(条件)···,当表达式的值为假时,执行while后面的语句。while语句的说明:(1)while语句属当型循环,即先判断条件(表达式),再执行循环体。(2)表达式为一条件,用于控制循环是否可继续执行,故称控制表达式。(3)语句A为内嵌式语句,是循环结构的循环体。它可以是单语句也可以是复合语句,且该语句中必须包含有对循环条件进行修改的语句。非0(真)0(假)语句A表达式1、while语句while范例在屏幕上打印5次hello#include“stdio.h”voidmain(){inti=1;while(i=5){printf(“hello\n);i++;}}初值(从什么情况开始)条件(结束值,什么情况结束)循环体(重复什么)循环体中改变循环条件的语句)例求1+2+······+100分析:求和的过程为:1)S=1S=S+12)S=1+2S=S+23)S=1+2+3S=S+3············100)S=1+2+···+100S=S+100S=0求和表达式:S=S+i初值:S=0循环次数i:1~100定义变量s,is=0,i=1;i≤100s+=i;i++;输出sNY流程图:程序:main(){ints,i;s=0,i=1;while(i=100){s=s+i;i++;}printf(s=%ld\n,s);}循环条件循环终值循环条件改变语句循环初值循环初值while语句注意事项1、计数变量要有初始值2、计数变量在执行语句中要有变化3、条件最后必须为假,来结束语句。否则为死循环4、如果循环体中包含多个语句,应用括号括起来。如果不加括号,则while语句只负责它后面的第一个语句5、在循环体中应该有使循环趋向结束的语句,否则会导致死循环。如上例中的语句改写成如下形式:i=1;while(i=100)s+=i;i++;则while语句的循环体语句为:s+=i;循环变量i的值没有改变,循环不能终止,陷入死循环作业1、输出1~10十个整数。2、求10!(10的阶层)。3、输出100内所有的偶数。4、输出100内所有的偶数个数。5、计算1~100之间所有奇数的和。6、求1-100内不能被3整除的数之和。7、1~100之间可以被7整除,但不能被13整除的数据的和8、1~n之间所有整数的和,用户输入n求10!(10的阶层)#includestdio.hvoidmain(){longinti=1,s=1;while(i=10){s=s*i;i++;}printf(%ld,s);}#includestdio.hvoidmain(){inti=1,j=0;while(i=100){if(i%2==0){j++;printf(%d,i);}i++;}printf(\n总个数:%d,j);}例:输出100内所有的偶数及偶数个数。1~100之间所有的偶数1~100之间所有的奇数1~100之间所有偶数的和1~100之间所有奇数的和1~100之间所有的偶数(倒序输出)1~100之间所有的奇数(倒序输出)作业从键盘输入n值,输出n行每行6个*号。例:输入n=4,输出的图形如下:************************#includestdio.hvoidmain(){inti=1,n;scanf(%d,&n);while(i=n){printf(******\n);i++;}}例:求12+22+32+42+52+……1002includestdio.hvoidmain(){intk;longintresult=0;while(k=100){result=result+k*k;k++;}printf(result=%ld\n,result);}拓展题:例2:统计从键盘输入一行字符的个数。#includestdio.hmain(){intn=0;printf(输入一个字符:\n);while(getchar()!='\n')n++;printf(%d,n);}输入数据,-1结束并显示求和结果。#includestdio.hvoidmain(){inti,s=0;scanf(%d,&i);while(i!=-1){s=s+i;scanf(%d,&i);}printf(%d,s);}一般形式:do{循环体语句;}while(表达式);执行流程:假(0)whiledo循环体expr真(非0)do~while语句执行过程:先执行一次循环体语句,然后判别表达式,当表达式的值为真时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。特点:先执行循环体,然后判断循环条件是否成立。do…while范例在屏幕上打印5次hello#includestdio.hvoidmain(){inti=1;do{printf(“hello\n);i++;}while(i=5);}do~while语句特点和说明特点:先执行循环体,后判断表达式说明:至少执行一次循环体例6.3求1到100的和#includestdio.hvoidmain(){inti,sum=0;i=1;do{sum=sum+i;i++;}while(i=100);printf(%d\n″,sum);}运行结果:50501001nn举例如果我国当前人口是13亿,假设我国的人口每年增长的速度是千分之三,问经过多少年我国人口将达到60亿??main(){intn=0;doublerenkou=13;while(renkou60){renkou=renkou*(1+0.003);n++;}printf(%ld\n,n);}作业1、输出1~10十个整数。2、计算1+2+3…+99+100的和3、求5!4、求1~100之间5的倍数的个数。do-while、while的区别while语句和用do-while语句的比较:在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。运行结果:1↙sum=55再运行一次:11↙sum=0运行结果:1↙sum=55再运行一次:11↙sum=11for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。for语句一般形式:for(表达式1;表达式2;表达式3)循环体语句;执行流程:表达式2循环体假(0)真(非0)for表达式1表达式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(){inti,sum=0;for(i=1;i=100;i++)sum=sum+i;printf(“%d”,sum);}例:在屏幕上打印5次hello。#include“stdio.h”voidmain(){inti;for(i=1;i=5;i++){printf(“hello\n);}}例:求1~100之间5的倍数的个数。例:求12+22+32+42+52+……1002includestdio.hvoidmain(){intk;longintsum=0;for(k=1;k=100;k++)sum=sum+k*k;printf(“sum=%ld\n,sum);}例:求n!求阶乘的过程为:1)S=1S1=S0×12)S=1×2S2=S1×23)S=1×2×3S3=S2×3············n)S=1×2×···×nSn=Sn-1×100S0=1求阶乘表达式:S=S×i初值:S=1循环次数i:1~n循环结构程序举例定义符号常量N定义变量n,i,ss=1;i=1i≤Ns*=ii++输出sYN流程图:程序:#defineN10main(){inti;longints=1;for(i=1;i=N;i++)s=s*i;printf(s=%ld\n,s);}例:求5!例:打印输出1000以内的水仙花数(三位数)。main(){intm,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)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也可以省略,但此时程序设计者应另外设法保证循环能正常结束。如: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.5用for语句实现循环说明:(5)3个表达式都可省略,如:for(;;)语句相当于while(1)语句即不设初值,不判断条件(认为表达式2为真值),循环变量不增值。无终止地执行循环体。for范例计算1+2+3…+99+100的和开始结束i=1;i=100;i++定义i,sum=0;输出sumSum+=i;是否for范例(续)#includestdio.hvoidmain(){inti;intsum=

1 / 92
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功