大学课程《C语言程序设计》PPT课件:第六章.pptx
- 文档编号:18866970
- 上传时间:2024-02-03
- 格式:PPTX
- 页数:18
- 大小:293.29KB
大学课程《C语言程序设计》PPT课件:第六章.pptx
《大学课程《C语言程序设计》PPT课件:第六章.pptx》由会员分享,可在线阅读,更多相关《大学课程《C语言程序设计》PPT课件:第六章.pptx(18页珍藏版)》请在冰点文库上搜索。
第六章循环控制6.1概述6.2goto语句以及用goto语句构成循环6.3while语句6.4do-while语句6.5for语句6.6循环的嵌套6.7几种循环的比较6.8break和continue语句6.9程序举例6.1概述循环控制结构主要是用来处理一些需要重复处理的问题,其主要特点是:
在给定的条件(循环条件)成立时,反复执行某指定语句或者程序段,直到条件不成立为止。
C语言提供的循环控制语句有四种:
(1)用goto语句和if语句构成循环;
(2)用while语句来实现当型循环;(3)用do-while语句来实现直到型循环;(4)用for语句实现次数型循环。
6.2goto语句以及用goto语句构成循环goto语句又称为“无条件转移语句”,其一般格式为:
goto语句标号;这里的“语句标号”是由标识符+“;”构成的,它代表语句的入口。
其中,标识符以字母或下划线开头,由字母、数字和下划线组成。
【例【例6-16-1】从键盘输入一行字符,计算这些字符的个数。
#includevoidmain()intn=0;printf(inputastring);loop:
if(getchar()!
=n)n+;gotoloop;printf(%d,n);程序运行结果如图6.1所示。
图图6.16.1例例6-16-1运行结运行结果果6.2goto语句以及用goto语句构成循环使用goto语句时,应注意以下几点:
(1)它可以插在程序的任何地方实现程序流的任意转移,但是这个流程必须在函数内,不能转移到该函数外。
(2)语句标号只能是标识符而不能是数字,并且goto语句可以与if语句一起构成循环结构。
(3)goto语句多使用在多重循环结构的内层循环体中,实现从内层循环直接跳到外层循环,但是此语句容易造成程序流的混乱,所以建议少用或者不用goto语句。
6.3while语句while语句的一般形式为:
while(表达式)循环体功能:
执行此语句时,先判断表达式,当表达式成立时,执行循环体,直到表达式不成立时退出循环。
所以,while循环也称为“当型循环”。
需要注意的是:
表达式为循环控制条件,它可以是各种常用的表达式类型;循环体可以是单独的语句,也可以是空语句或者流程控制语句;在循环体中必须含有能使循环结束的控制变量,否则程序将一直循环运行,无法结束,最终造成死循环。
【例【例6-26-2】利用while语句编程,计算1+2!
+3!
+50!
的和。
#includemain()floata=1,s=0,b=1;while(a=50)编码接下页编码接下页6.3while语句b*=a;s+=b;a+;printf(1+2!
+3!
+50!
=%en,s);分析:
在此程序中,a=50是判断条件,避免程序进入死循环,while后边的循环体包含多个语句,所以必须用括起来,成为一个复合语句。
程序运行结果如图6.2所示。
图图6.26.2例例6-26-2运行结运行结果果6.4do-while语句do-while语句是直到型的循环结构,它是先执行循环体,然后再判断条件是不是成立。
do-while语句的一般形式为:
do循环体while(表达式);功能:
执行此语句时,先执行循环体,然后再判断表达式的值,若表达式为“真”,则重新跳回再执行一次循环体语句,然后再判断一次表达式的值,这样反复执行,直到表达式的值为0时结束。
像do-while语句这种先执行循环体再判断表达式的值的循环也被称作“直到型循环”。
【例【例6-36-3】利用do-while语句编程,计算1+2!
+3!
+50!
的和。
main()floata=1,s=0,b=1;dob*=a;s+=b;编码接下页编码接下页6.4do-while语句a+;while(i=50);printf(1+2!
+3!
+50!
=%en,s);程序运行结果如图6.3所示。
可以看出,对于同一个问题,用while和do-while两种语句都可以处理,一般情况下这两种语句在处理同一问题时,如果两者的循环体部分一样,则它们的执行结果也一样。
但是需要注意的是,这里所说的只是“一般情况”,如果while后边的表达式一开始就为假,那么这种情况下两种循环的结果是不同的。
while语句和do-while语句最大的区别就是:
do-while是先执行循环体再进行条件判断,也就是说不论表达式是否为真,do-while都会执行一次循环体;而while语句则是先判断表达式的值,然后再执行循环体,如果条件不满足,则循环体一次也不执行。
6.5for语句在循环控制语句中,for语句被称为是使用最为广泛的、最为灵活的一种循环控制语句,其基本形式为:
for(表达式1;表达式2;表达式3)语句功能:
其执行过程为
(1)执行表达式1。
(2)求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面第(3)步;若其值为假(0),则结束循环。
(3)求解表达式3。
(4)转回第
(2)步继续执行。
(5)循环结束,执行for语句下面的语句。
for语句的结构流程图如图6.6所示。
关于for语句后的表达式,表达式1用来给单个循环变量赋初值,是一个初值表达式;表达式2为关系或逻辑表达式,是循环执行的条件,用来判断循环是否执行;表达式3一般为赋值表达式,多用来改变循环变量的值。
图图6.6for6.6for语句的结构流程语句的结构流程图图表达式2语句求解表达式1for语句的下一语句求解表达式3真假6.5for语句【例【例6-56-5】编写程序,计算s=1+3+5+7+97+99的值。
#includevoidmain()ints=0,i;for(i=1;i100;i+=2)s=s+i;printf(s=%d,s);程序运行结果如图6.7所示。
分析:
在此程序中,表达式i=1给循环变量赋初值,表达式i100是循环体是否执行的判断条件,循环体执行一次,i的值就进行一次自加运算。
由于for语句非常灵活,所以在具体的应用中它有很多变形的形式:
(1)在for语句之前,循环变量如果已经被赋了初值,那么for语句的一般形式中的“表达式1”可以省略,但其后边的分号不能省略;如果在for语句的循环体内修改了循环变量,则表达式3也是可以省略的,例如例6-5,以下两种形式都是成立的:
图图6.7例例6-5运行结运行结果果6.5for语句ints=0,i=1;for(i=1;i100;)for(;i100;i+=2)或s=s+i;i+=2;第一种形式,程序开始就对i赋了初值,所以for语句中就没有必要再赋初值了。
第二种形式虽然省略了表达式3,但是在循环体中对i进行了修改,所以并不影响最后的循环结果。
(2)对于“表达式2”,如果省略表达式2,就相当于没有了循环判断条件,循环将无终止的进行下去。
如例6-5写成for(i=1;i+=2)的形式,就不能完成正确的计算了,程序将进入一个无终止的循环中,此时,要终止循环可以用break语句。
(3)表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,特别是有两个循环变量对循环进行控制的情况。
(4)for语句中的表达式1和表达式3可以同时省略,此时for语句等价于一个while语句。
(5)表达式1、表达式2、表达式3可以同时省略,相当于所有条件都为真,此时for是一个无循环终止条件的循环,可以用break语句终止。
但是需要注意的是:
不管省略哪个表达式,“;”都不能省略。
6.6循环的嵌套一个循环体内又可以完整地包含另一个循环体,这称为循环的嵌套。
前边所讲的循环语句都可以相互嵌套,如for与for的嵌套、while与for的嵌套等。
【例【例6-76-7】运行以下程序。
main()inti,j,k;printf(ijkn);for(i=0;i2;i+)for(j=0;j2;j+)for(k=0;k2;k+)printf(%d%d%dn,i,j,k);程序运行结果如图6.9所示。
图图6.96.9例例6-76-7运行结果运行结果6.7几种循环的比较
(1)四种循环都可以用来处理同一个问题,一般可以互相代替。
但一般不提倡用goto型循环。
(2)用while和do-while循环时,循环体中应包括使循环趋于结束的语句。
for语句功能最强大。
(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化。
6.8break和continue语句6.8.16.8.1breakbreak语句语句break语句的格式为:
break;功能:
break多用在循环语句和开关语句中。
在开关语句switch中,break可使程序跳出switch而执行switch以后的语句;在循环结构中,break同样可使程序终止循环而执行循环后面的语句。
break语句总是与if语句联在一起,当满足条件时就跳出循环。
【例【例6-96-9】将20到30之间第一个能被6整除的数找出来。
#includevoidmain()intn;for(n=20;n=30;n+)if(n%6=0)printf(%dn,n);break;程序运行结果如图6.11所示。
break不能用于循环语句和switch语句以外的任何其他语句中。
图图6.116.11例例6-96-9运行结果运行结果6.8break和continue语句6.8.26.8.2continuecontinue语句语句continue语句的格式为:
continue;功能:
利用continue语句可以跳过循环中剩余未执行的语句而强行执行下一次循环,但是continue语句并不使程序退出循环结构,整个循环是否结束由循环条件决定。
continue语句常与if条件语句一起使用,用来加速循环。
【例【例6-106-10】显示键盘上输入的字符,如果按Enter键,则不做处理,继续输入下一字符;如果按Esc键,则退出循环。
#includeconio.hvoidmain()charch;for(;)ch=getch();if(ch=27)break;if(ch=13)编码接下页编码接下页6.8break和continue语句continue;putch(ch);getchar();程序运行结果如图6.12所示。
图图6.126.12例例6-106-10运行结果运行结果6.9程序举例【例【例6-116-11】求解sum=1!
+3!
+5!
+(2n-1)!
。
分析:
此题是一个阶乘求和问题,一般都是有两个控制变量,用for语句实现,编程时要注意变量间的关系。
main()floatsum=0,temp;inti,j,n;scanf(%d,&n);for(i=1;i=2*n-1;i+=2)temp=1;for(j=1;j=i;j+)temp*=j;sum+=temp;printf(sum=%fn,sum);程序运行结果如图6.13所示。
图图6.136.13例例6-116-11运行结运行结果果6.9程序举例【例【例6-126-12】输出如下图案。
*分析:
对于这类问题,必须明确共输出几行、每行几个字符、每行的字符是什么这三个问题。
本题共6行,每行输出的字符数逐行加1,且每行的字符全为“*”,所以用一个次数为6的外层循环和一个次数为6的内层循环来控制。
#includevoidmain()inti,j;for(i=1;i=6;i+)for(j=1;j=i;j+)printf(*);printf(n);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 大学 课程 语言程序设计 PPT 课件 第六