C语言第5章循环结构程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言第5章循环结构程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 循环 结构 程序设计 课件
- 资源描述:
-
1、 前面已介绍了顺序结构,选择结构,本章介绍循环结构。如:sum=1+2+3+100;,i1002i实际问题:一组重复执行的语句。则用循环结构解决。C语言用四种形式循环2.do-while 语句 3.For 语句4.break、continue和goto语句1.While 语句 while语句在C语言中用得比较多,它是通过判断循环控制条件是否满足来决定是否继续循环,又称“当型”循环。1.形式:while(表达式)循环体语句2.执行过程:先判断表达式的值。若0.则执行其后面的语句,否则while执行完毕。专门的当型循环语句while语句3.流程图:表达式语句0=0下一语句将上述例子用while语句
2、写出 while(i=100)sum+=i;i+;语句中应有使表达式=0的语句。否则会出现无限循环死循环。注:while后面的语句一般为复合语句,即:加 我们来看下面的例子例5.1 写一个程序,输入一个班学生的成绩,求全班的平均成绩。分析:输入成绩、计算平均成绩都是一个重复性过程,因此可以用循环语句来实现。在这里,我们并不知有多少个学生,也就是说不知循环到底有多少次,但考虑到成绩没有负数,这样就可以把循环条件定为:每当输入的分数大于等于0时就继续输入成绩;输入的分数小于0时就停止输入。解题步骤如下:(1)输入一个分数(2)当“分数=0”时,做下列工作:累计总分;人数加一;输入下一分数;(3)重
3、复第(2)步,直到“分数0”。程序:#include main()float score,average=0;/*average存放平均成绩,初值为0*/int n=0;/*n用来存放学生数,初值为0*/scanf(%f,&score);/*输入第一个学生的分数*/while(score=0)average+=score;/*average先用来放总分*/n+;/*学生数增一*/scanf(%f,&score);/*输入下一个学生的分数*/if(n!=0)average=average/n;/*求平均成绩,average*/printf(%6.2f,average);/*输出平均成绩avera
4、ge,保留两位小数*/在使用while语句的时候,我们要注意以下两个问题:(1)循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句的形式出现。如果不加花括号,则while语句的范围只到while后面的第一个分号处。比如上例中,while语句中如无花括号,则while语句范围只到“average+=score;”。(2)在循环体中应有使循环趋向于结束的语句。比如上例中,循环结束的条件是“score=0”,那么当我们把这个班的成绩全部输入完后,一定要输入一个负数,才能使程序往下执行。(3)循环体语句有可能一次也不执行。比如说上例中,当第一次输入的分数就为负数时,则循环体一次也不执行。do
5、-while语句的特点是:先执行循环体中的语句,再通过判断表达式的值来决定是否继续循环,循环条件的测试是在循环的尾部进行的。它是一种专门的“直到型”循环语句。它的一般形式为:do循环体语句while(表达式);语句表达式0=03.流程:对于例5.1用do-while语句编写程序如下:#include main()float score,average=0;int n=0;do/*不进行判断,先进入循环*/scanf(%f,&score);/*输入学生的分数*/if(score=0)average+=score;n+;while(score=0);/*表达式为非0,则继续*/if(n!=0)av
6、erage/=n;/*求平均成绩,average*/printf(%6.2f,average);/*输出平均成绩average,保留两位小数*/例5.2 编程序求1+3+5+7+9+这样的数之和。如果累加数大于750时,则程序终止并输出结果。main()int i=1,sum=0;while(sum=750)sum=sum+i;i=i+2;printf(n%d,sum);例5.3 用do-while语句求1至1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印五个数。分析:判断一个数被另一个数除,用取模运算%。三个条件是“与”的关系。一行打印五个数,可以通过计数到5再回车换
7、行。程序代码如下:#include main()int i=1,j=0;doif(i%3=2&i%5=3&i%7=2)printf(%4d,i);j=j+1;if(j%5=0)printf(n);i=i+1;while(i1000);注意:1、do-while语句的循环体语句至少要被执行一次,因为它是进入循环后再判别表达式。而while语句却是首先判别表达式,如果表达式值为0,则一次循环也不执行。2、循环控制变量必须在循环体内有所改变,才能使while和do-while语句的循环控制条件表达式的值不断改变,直至循环结束。否则会造成死循环。例如:i=1;while(i=100)putchar(*
8、);i+;这个循环永远不会结束,因为“i+;”语句不属于循环体中的语句,循环控制变量i没有在循环体内被改变。程序应该作如下改变:i=1;while(i=100)putchar(*);i+;这条循环语句执行的结果是输出100个“*”。还可以将它改成do-while语句:i=1;doputchar(*);i+;while(i=100);大家可以看到,对于同一个问题,既可以用while语句处理,也可以用do-while语句处理。那么,它们到底有什么区别呢?while语句与dowhile语句的区别:当第一次执行时,若表达式=0时,则while语句与do while有所不同,do while 执行一次后
9、面的语句,而while不执行。1.一般形式 首先计算表达式1,接着执行表达式2,若表达式2的值0,则执行语句,接着计算表达式3,再判断表达式2的值.依此重复下去,直到表达式2的值=0(假)。for语句是C语言中最有特色的循环语句,使用最为灵活方便。for(表达式1;表达式2;表达式3)循环体语句2.流程:计算表达式1求表达式2值语句计算表达式3=0(假)0(真)2.执行过程(1)先求解表达式1。(2)求解表达式2,若其值为真(值非0),则执行for语句中指定的循环体语句,然后执行下面第(3)步。若为假(值为0),则结束循环,转到第(5)步。(3)求解表达式3。(4)转回上面第(2)步继续执行。
10、(5)循环结束,执行for语句下面的一个语句。用for语句写出上述例子for用while代替的流程 表达式1;while(表达式2)语句 表达式3;for(i=1;i=100;i+)sum+=i;for语句完全可以用while代替,但for直观、简单、方便for语句中的各表达式含义(1)表达式1:初值表达式,用于在循环开始前,为循环变量设置初始值。(2)表达式2:循环控制逻辑表达式,它控制循环执行的条件,决定循环次数。(3)表达式3:循环控制变量修改表达式,定义了循环一次,循环控制变量的变化情况。注意:表达式1,表达式2,表达式3必须用分号隔开只要条件为真,for循环就一直执行,一旦条件变为假
11、,程序就从紧跟在for循环后面的语句重新开始执行。循环体语句:被重复执行的语句。下面通过一个例子来看for语句的执行过程。例5.4 在屏幕上打印1到100的数字。当然解决这个问题我们可以用100个printf语句实现,但当要打印的数字量很大时,采用这种方式显然是不合适的,我们可以用for循环语句来实现。程序如下:#include main()int x;for(x=1;x=100;x+)printf(%d,x);在这个程序中,x经初始化置为1,因为x小于100,调用printf语句x+1,并且测试x,看其是否仍然小于或等于100。重复进行这个过程,直到x大于100,循环结束。在这个例子中,x是
12、循环控制变量:循环每重复一次x发生变化,并对x进行检查。例5.5 写程序计算s=1+2+3+100分析:此题可用循环语句来编写程序,循环控制变量i从1增加到100。设s的初值为0,则循环体为:s=s+i;/*i=l,2,,100*/程序:#include main()int s0,i;for(il;i100;i+)s=s+i;/*循环体语句*/printf(s%d,s);上面程序中,for语句的执行过程为:计算表达式1“il;”,得到循环控制变量的初值;求解表达式2,若表达式2的值为零(当x100),则结束for循环;执行循环体语句“ss+i;”;求解表达式3,“i+;”,然后转向步骤。对于f
13、or循环,有一点非常重要,即条件测试永远是在循环开始时进行,如果在循环开始时条件为假,那么循环体语句就不会被执行。如:int i=10;for(k=10;k!=i;k+)printf(%d,k);printf(%d,k);在这个循环程序段中,循环开始时,由于i=k,所以根本不会执行,正是由于条件表达式取值为假,循环体语句和循环的增量部分都不执行,因此,k一直为10,最后屏幕上输出的数字也是10。例5.6 写程序计算s=1-3+5-7-99+101。这个例子也可看成是数的累加,但与上面的例子稍有差别,就是相加的数一个为正数,一个为负数。程序代码如下:#include main()int i,t=
14、1,s=0;for(i=1;i=101;i+=2)t=t*i;s=s+t;t=(-t)/i;/*正1,负1交叉*/printf(%dn,s);for语句与while语句的比较for语句等价于下列语句序列:表达式表达式1;while(表达式表达式2)语句;语句;表达式表达式3;相比之下,for语句显得结构整齐、紧凑、清晰。for语句的变形语句的变形1.表达式的省略如果在for语句之前给循环变量赋了初值,则表达式1可以省略,但其后的分号不可省略。对于例5.2,其循环语句可以写成如下形式:i=1;/*在for语句之前给循环变量赋初值*/for(;i100;i+)s=s+i;如果省略表达式3,则应在f
15、or语句的循环体内修改循环控制变量。例如:for(i1;i100;)ss+i;i+;/*修改循环控制变量*/如果表达式1和表达式3都省略,则for语句就相当于while语句。例如:il;/*for语句之前给循环变量赋初值*/for(;i100;)ss+i;i+;/*修改循环控制变量*/就相当于:i=1;while(i100)break;/*如果i100,则退出循环*/2.for语句中的逗号表达式逗号运算符的主要应用就是在for语句中。for语句中的表达式l和表达式3可以是逗号表达式,特别是在有两个循环变量参与对循环控制的情况下。若表达式1和表达式3为逗号表达式,将使程序显得非常清晰。例如:#i
展开阅读全文