收藏 分销(赏)

第5章 循环控制.ppt

上传人:pc****0 文档编号:13877134 上传时间:2026-04-29 格式:PPT 页数:50 大小:2.71MB 下载积分:10 金币
下载 相关 举报
第5章 循环控制.ppt_第1页
第1页 / 共50页
第5章 循环控制.ppt_第2页
第2页 / 共50页


点击查看更多>>
资源描述
课 程 简 介,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,C,程 序 设 计,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,2026/4/29 周三,1,C,程序设计,第,5,章 循环控制,2026/4/29 周三,2,重点难点,:,1.while,、,dowhile,、,for,三个循环语句。,2.,循环嵌套,3.break,语句和,continue,语句,2026/4/29 周三,3,循环:就是在满足一定条件时重复执行一 段程序。,C,语言中可实现循环的语句:,while,语句,(当型循环),do while,语句,(直到型循环),for,语句,(功能多,最强大),2026/4/29 周三,4,5.1 while(),语句,一、格式,:,while(,表达式,),语句,(,语句可为一条或多条,用,括上构成复合语句,),二、执行过程,A,真,假,条 件,P,2026/4/29 周三,5,例,1,用,while,循环求,#include,main(),int i,sum=0;,i=1;,while(i=100),sum=sum+i;,i+;,printf(%d,sum);,循环变量赋初值,循环终值,循环变量增值,循环条件,(循环控制表达式),循环体,2026/4/29 周三,6,思考:在保证程序功能不变的前提下,1.i,的初值是否能为,0,如果可以,程序怎么改?,2.i=i+,放在,sum=sum+i,前可否,怎么改?,#include,main(),int i=0,sum=0;,while(i=100),sum=sum+i;,i+;,printf(%d,sum);,#include,main(),int i=1,sum=0;,while(i=100),i+;,sum=sum+i;,printf(%d,sum);,sum=1,;,(i100),就是控制循环次数的问题。此时循环了多少次?,2026/4/29 周三,7,注意:,1.,若循环体包含一条以上语句,应用,复合语句,出现。,2.,循环体中,必须有改变,循环控制变量值,的语句。(使循环趋向于结束的语句),3.,循环前,必须给循环控制变量赋,初值。,2026/4/29 周三,8,例,2,求,100!=1*2*3*.100,算法:,定义,t=1,为实型,n=1,为整型,2.,判断,n100,成立,2.1 t=t*n;,2.2 n+;,3.,输出,t,(不符合条件时)。,main(),double,t=1;,int n=1;,while(n=100),t=t*n;n+;,printf(“t=,%e,n”,t);,2026/4/29 周三,9,例,3,若改为求,n!=1*2*3*.*n,main(),double t=1;int i=1,n;,scanf(“%d”,while(i=n),t=t*i;i+;,printf(“t=%en”,t);,从键盘输入,30,个学生成绩,对其进行处理,如果及格,输出“,passed,”;否则,输出“,failed,”,书上 例,5.2,2026/4/29 周三,10,2026/4/29 周三,11,5.2 dowhile(),语句,一、格式,:,do,循环体语句,while(,表达式,),;,二、执行过程,条 件,P,A,假,真,2026/4/29 周三,12,三、特点:,先执行循环体,然后再判断循环条件是否成立。,注意:,dowhile(),语句中,,while,(表达式)后有分号,切记,!,2026/4/29 周三,13,例,4,:求,算法:,1.,定义,s=0,n=1,为整型,2.,循环体:,s=s+n;,n=n+1;,3.,判断,n100,成立,4.,输出(不符合时),s,。,main(),int s=0,n=1;,do s=s+n;n=n+1;,while(n=100);,printf(“s=%dn”,s);,2026/4/29 周三,14,例,5,求,分析,=1!+2!+3!+100!,算法,:,1.,定义,n=1,为整型,t=1,s=0,为实型。,2.t=t*n;s=s+t;n+;,3.n100,成立。,3.,输出,s(,不符合时,),。,main(),int n=1;,double s=0,t=1;,do t=t*n;s=s+t;n+;,while(n=100);,printf(“s=%en”,s);,2026/4/29 周三,15,练习题:求,1+3+5+7+99,main(),int s=0,n=1;,do s=s+n;n=n+1;,while(n=100);,printf(“s=%dn”,s);,2,将输入的一串字符显示在屏幕上,遇到空格时停止。,书上 例,5.4,2026/4/29 周三,16,2026/4/29 周三,17,while,与,dowhile,比较,main(),int s=0,n;,scanf(%d,while(n=10),s=s+n;n+;,printf(%d,s);,main(),int s=0,n;,scanf(%d,do s=s+n;n+;,while(n=10);,printf(%d,s);,输入,:1,结果,:55,输入,:11,结果,:0,输入,:1,结果,:55,输入,:11,结果,:11,2026/4/29 周三,18,条 件,P,A,while,dowhile,真,假,假,条 件,P,A,假,真,假,条 件,P,条 件,P,A,假,当循环条件第一次就为假时,2026/4/29 周三,19,5.3 for(),语句,一、格式,:,for(,表达,1;,表达式,2;,表达式,3),语句,二、执行过程,(,1,)首先求解表达式,1,。,(,2,)求解表达式,2,,若其值为,“,真,”,(非,0,),则执行循环体中的语句,若为假,转至执行第(,5,)步。,(,3,)求解表达式,3,。,(,4,)转至第,(2),步重复执行。,(,5,)执行,for,循环语句的下一语句。,2026/4/29 周三,20,例,6,:求,main(),int s=0,n;,for(n=1;n=100;n+),s=s+n;,printf(“s=%dn”,s);,2026/4/29 周三,21,for,语句最简单的应用形式,也是最容易理解的形式:,for(,表达,1;,表达式,2;,表达式,3),语句,for(,循环变量赋初值;循环条件;循环变量增值,),语句,例如,,for(i=1;i=50;i+)sum=sum+i;,2026/4/29 周三,22,1.for,语句可省略“表达式,1”,。,“表达式,1”,的作用是设定循环初始条件,“表达式,1”,省略后,应在,for,语句前面设置循环初始条件。,例,:,for(,;,i=100;i+)sum=sum+i,;,/*,注意,“表达式,1”,后面的,分号,不能省略*,/,几点说明,:,2026/4/29 周三,23,2.,省略表达式,1,,不对循环变量赋初值。,3.,表达式,2,可省略,加,break,语句跳出循环,.,否则不判断循环条件,将成为”死循环”,.,4.,表达式,3,(修改循环条件)可以省略,将修改循环条件的语句放在在循环体,(,语句,),中,以保证循环能正常结束。,例,:for(sum=0,i=1;i=100;),sum=sum+i;i+;,5.,省略“表达式,1”,和“表达式,3”(,相当于,while,语句,).,for(,;,i=100,;,),sum=sum+i,;,i+,几点说明,:,2026/4/29 周三,24,6.3,个表达式都可以省略,相当于,while,(,1,)。,7.,“表达式,1,”也可以是其他表达式。,8.,表达式,1,和表达式,3,也可以是逗号表达式。,9.,表达式,2,一般为关系、逻辑表达式,也可是数值表达式或字符表达式,只要其值不等于,0,,就执行循环体。,例:,n=?,时,跳出循环?,1,),for(n=1;n-4;n+)s=s+n;,2,),for(n=4;n;n-)s=s+n;,n=4,n=0,几点说明,:,2026/4/29 周三,25,例,7,:输出,1001000,之间同时能被,3,和,5,整除的数及其和。,main(),float s=0;,int i;,for(i=100;i=1000;i+),if(i%3=0&i%5=0),s=s+i;,printf(“%5d”,i);,printf(“s=%fn”,s);,2026/4/29 周三,26,5.4,循环嵌套,循环嵌套,一个循环,(,称为“外循环”,),的循环体内包含另一个,完整,的循环,(,称为“内循环”,),。内循环中还可以包含循环,形成多层循环。(循环嵌套的层数理论上无限制),。,2026/4/29 周三,27,1.,分为内外循环,2.,三种循环语句可以相互嵌套,(1)while(),while(),.,(2)do,do,while();,.,while();,(3)while(),do,while();,.,(4)for(;),do,while();,while(),.,内循环,外循环,内循环,2026/4/29 周三,28,3.,为完全嵌套,即一种循环的头和尾都嵌套在另一个循环里,此为合法嵌套。,4.,若一个循环的头在一个循环里,而尾在循环外,形成交叉循环,为不合法嵌套。,内层循环,2026/4/29 周三,29,例,8,:,main(),int a,b;,for(a=1;a=3;a+),printf(“a=%dn”,a);,for(b=1;b=2;b+),printf(“a=%d,b=%dn”,a,b);,执行:输出结果,a=1,a=1,b=1,a=1,b=2,a=2,a=2,b=1,a=2,b=2,a=3,a=3,b=1,a=3,b=2,2026/4/29 周三,30,说明,嵌套的循环控制变量不能相同,内循环变化快,外循环变化慢,(,外:执行一次,内:从头到尾全部循环一次),正确确定循环体,循环控制变量常与求解的问题挂钩,for(sum=0,i=1;,i=100,;),sum,=sum+i,;i+;,2026/4/29 周三,31,main(),int i,j;,for(i=1;i=9;i+),for(j=1;j=i;j+),printf(“%d*%d=%-3d”,i,j,i*j);,printf(“n”);,一、,1*1=1,2*1=2 2*2=4,3*1=3 3*2=6 3*3=9,二、,i,是被乘数,i=19,j,是乘数,j=1i,“i*j”=i*j,的值,三、,确定内外循环,i,为外循环,,j,为内循环,例,9,打印九九表,一、定义变量,二、确定循环语句,设初值,确定循环条件,循环变量自增,三、循环体,四、输出,2026/4/29 周三,32,5.5,几种循环比较,选择三种循环的一般原则,如果循环次数已知,用,for,如果循环次数未知,用,while,如果循环体至少要执行一次,用,do-while,这只是,“,一般,”,原则,不是,“,规定,”,。,2026/4/29 周三,33,1.,关于循环的控制,循环变量赋初值,While(,表达式),do,语句,for(,式,1,,式,2,,式,3),语句,while(,表达式)语句,循环变量值的改变 循环控制表达式,2026/4/29 周三,34,2.,循环体的执行,while,、,for,语句是先判断条件,循环体可能一次不执行。,dowhile,语句后判断条件,循环至少执行一次。,3.for,循环功能最强。,4.,都可用,break,语句跳出循环,用,continue,语句结束本次循环,而用,if-goto,语句构成的循环就不能用,break,和,continue,进行控制。,2026/4/29 周三,35,5.6 break,语句和,continue,语句,一、,break,语句,1.,格式:,break;,2.,作用:,结束,switch,结构和三种循环,结束本层循环,转到循环的下一条语句,2026/4/29 周三,36,例,10,计算,r=1,到,r=10,时的圆面积,直到面积大于,100,为止。,define PI 3.1415926,main(),int r;,float s;,for(r=1;r100)break;,printf(r=%d,s=%fn,r,s);,1.,定义变量,2.,确定循环语句(,for),1,)设初值,r=1,2,)确定循环条件,r100,,退出,输出,2026/4/29 周三,37,运行结果:,r=1 s=3.1415930,r=2 s=12.566370,r=3 s=28.274334,r=4 s=50.265480,r=5 s=78.539818,2026/4/29 周三,38,使用,break,语句应注意如下几个问题:,(,1,),break,语句只能用于,switch,结构或循环结构,并总是作为,if,语句的内嵌语句,例,if(),break;,2026/4/29 周三,39,(,2,)在循环语句嵌套使用的情况下,,break,语句只能跳出(或终止)它所在的循环,而不能同时跳出(或终止)多层循环,如:,for(),for(),break;,2026/4/29 周三,40,二、,continue,语句,格式:,continue;,作用:,是结束本次循环,即跳过循环体中下面尚未执行的语句,直接进行下一次是否执行循环的判定。,过程:,终止当前这一轮循环,即跳过循环体中位于,continue,后面的语句而立即开始下一轮循环;对于,while,和,do-while,来讲,这意味着立即执行条件测试部分,而对于,for,语句来讲,则意味着立即求解表达式,3,。,2026/4/29 周三,例,12,把,100,到,150,之间的不能被,7,整除的数及其和输出。,main(),int i,s=0;,for(i=100;i=1e-6,1)pi=pi+t;,2)f=-f;,3)i=i+2;,4)t=f*1.0/i,3.pi=pi*4,5.,输出,#include“math.h”,main(),int i=1,f=1;,float t=1;pi=0;,while(fabs(t)=1e-6),pi=pi+t;,f=-f;,i=i+2;,t=f*1.0/i;,pi=pi*4;,printf(pi=%10.6fn,pi);,2026/4/29 周三,44,例,14,求,40,项,Fibonacci,数列:,f1=1 (n=1),f2=1 (n=2),fn=fn-1+fn-2 (n3),1 1 2 3 5 8 13.,f1,f2,f1=f1+f2,=1+1,f2=f2+f1,=2+1,f1=f1+f2,=2+3,2026/4/29 周三,算法,:,1.,定义变量,f1=1,f2=1,i;,2.,输出,f1,f2;,3.,进行循环,每次计算出两项并输出,f1=f1+f2,f2=f1+f2,main(),long int f1=1,f2=1;,/*,长整型数并已知数列的前两个初值*,/,int i;,printf(%12ld%12ld,f1,f2);,for(i=1;i=20;i+),f1=f2+f1;,f2=f1+f2;,printf(%12ld%12ld,f1,f2);,/*,输出长整型数*,/,if(i%2=0),printf(n);,/*,控制输出格式*,/,2026/4/29 周三,46,只有行数有变化,所以只定义,一个变量,a,从,15,。用一重循环,控制行数即可。,main(),int a;,for(a=1;a=5;a+),printf(“*n”);,2026/4/29 周三,47,分析,:,1.,每行的起始位置不同,空格数递减,1;,2.,每行的字符数同,3.,有两个变量,行:,15,;,空格:,40,;,4.,用循环嵌套实现,外循环控制输出行数,内循环控制输出空格数,行(,a,),:1 2 3 4 5,空格(,b,),:4 3 2 1 0,a+b=5,b=5-a,b:15-a,2026/4/29 周三,48,main(),int a,b;,for(a=1;a=5;a+),for(b=1;b=5-a;b+),printf(“”);,printf(“*n”);,2026/4/29 周三,49,行(,i,),:1 2 3 4 5,空(,j,),:4 3 2 1 0,*(k):1 3 5 7 9,j=5-i;,k=(2*i)-1,分析:,1.,定义变量,i,j,k;,2.,每行的起始位置不同,空格数:,j=5-i;,3.,每行的字符数不同,字符数:,k=(2*i)-1,4.,用循环嵌套实现,确定内外循环,外循环控制行数,两个并列内循环控制空格数和字符数,2026/4/29 周三,50,main(),int i,j,k;,for(i=1;i=5;i+),for(j=1;j=5-i;j+),printf(“);,for(k=1;k=2*i-1;k+),printf(“*”);,printf(“n”);,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服