《C语言PPT课件第04章循环控制.ppt》由会员分享,可在线阅读,更多相关《C语言PPT课件第04章循环控制.ppt(103页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4 4章章 循循 环环 控控 制制第一节第一节 概述概述第二节第二节 goto 语句语句第三节第三节 while 语句语句第四节第四节 do-while 语句语句第五节第五节 for 语句语句第六节第六节 循环的嵌套循环的嵌套第七节第七节 几种循环的比较几种循环的比较第八节第八节 break和和continue 语句语句第九节第九节 程序举例程序举例25-1 5-1 循环问题循环问题l循环在常中生活中经常遇到循环在常中生活中经常遇到上课问题:上课问题:从第一周到十五周,从第一周到十五周,每周每周 二上二上C语言课。这就是语言课。这就是一个循环一个循环。即每逢周二,就上。即每逢周二,就上C。
2、周二周二 C语言语言如果如果=15=15周周34-14-1循环语句循环语句 问题:问题:C课是从哪一周开始,到哪周结束,也就课是从哪一周开始,到哪周结束,也就是说循环是从哪里开始,到哪结束?是说循环是从哪里开始,到哪结束?整个过程为:整个过程为:S1:第一周开始第一周开始 S2:周二周二 S3:上上C S4:下一周数下一周数=15 Y 转到转到S2 N 课程结束课程结束 44-14-1循环语句循环语句 S1:第一周开始第一周开始 S2:周二周二 S3:上上C S4:下一周数下一周数=15 Y 转到转到S2 N 课程结束课程结束在这里,在这里,S1是循环的开始,是循环的开始,S4是控制循环的结束
3、是控制循环的结束 54-1 4-1 循环循环l提出问题提出问题2提问:提问:从键盘上输入从键盘上输入10个整数并求和,怎么编程?个整数并求和,怎么编程?回答:回答:在程序中写入在程序中写入10个个scanf()语句。语句。提问:提问:从键盘上输入从键盘上输入500个整数并求和,怎么编程个整数并求和,怎么编程?回答:回答:这个,嗯这个,嗯?不会让我写不会让我写500个个.老师:老师:让我们换一个角度来看待这些问题,让我们换一个角度来看待这些问题,以上问题的实质是:将以上问题的实质是:将scanfscanf函数重复执行函数重复执行N N遍。遍。学生:学生:对!好象是对!好象是 这么回事这么回事.老
4、师:老师:我们可以引出一个概念我们可以引出一个概念“循环循环”,简单而言:,简单而言:循循环环就是不断就是不断反复地执行同一段程序。反复地执行同一段程序。学生:学生:这就是我们今天要学的新东西?这就是我们今天要学的新东西?6今天要讲的是循环语句今天要讲的是循环语句基本语句基本语句 74-14-1循环语句循环语句l循环循环 反复执行同一段程序,直到满足反复执行同一段程序,直到满足一定的条件后才停止执行该段程序。一定的条件后才停止执行该段程序。lC语言中控制循环的语句:语言中控制循环的语句:while do-while do-while for for 下面我们先讲下面我们先讲 while whi
5、le 循环。举一个例子。循环。举一个例子。84-14-1循环语句循环语句例题例题1:从键盘上输入:从键盘上输入10个同学的分数,求平均个同学的分数,求平均成绩,怎么编程?成绩,怎么编程?分析:分析:1、要有一个存放同学成绩的变量、要有一个存放同学成绩的变量scod,有一个成绩累加的变量有一个成绩累加的变量sum 还有一个平均值变量还有一个平均值变量aver 2、每个学生的成绩从键盘输入、每个学生的成绩从键盘输入 3、总共要输入和累加十个学生的成绩,、总共要输入和累加十个学生的成绩,也就是要循也就是要循 环十次,用一个变量环十次,用一个变量K来表示。来表示。94-14-1循环语句循环语句 过程:
6、过程:S1:设设scod为同学的成绩,为同学的成绩,sum为成绩的累加为成绩的累加,aver为平均为平均 值,值,K为循环次数控制值。为循环次数控制值。S2:sum=0;表示累加数开始是零表示累加数开始是零 S3:K=1;表示从第一位同学开始表示从第一位同学开始 S4:当当(K=10)输入一个成绩输入一个成绩scod;sum=sum+scod;累加累加 k=k+1;循环的次数增循环的次数增1 S5:aver=sum/10;104-14-1循环语句循环语句编程如下:编程如下:int scod,sum,aver,k;sum=0;/*表示累加数开始是零表示累加数开始是零*/k=1;/*表示从第一位同
7、学开始表示从第一位同学开始*/while(k=10)scanf(“%d”,&scod);/*输入一个成绩输入一个成绩*/sum=sum+scod;/*累加累加*/k=k+1;/*循环的次数增循环的次数增1*/aver=sum/10;114-14-1循环语句循环语句例例2 计算计算n+n+n+.+n、10个个n求和,其算法如下:求和,其算法如下:设设SUM为累加数,为累加数,K为计数器为计数器,n=2。S1:n=2;SUM=0 (累计数开始为累计数开始为0)K=1 (表示从第一个数开始)表示从第一个数开始)S2:当当 K=10 (计算计算10 个数)个数)(否则转否则转s4)s3:SUM=SUM
8、+n (累加)累加)K=K+1(累计下一个数)累计下一个数)S4:打印打印SUM。124-14-1循环语句循环语句 int sum,k,n;n=2;sum=0;(累计数开始为累计数开始为0)k=1;(表示从第一个数开始)表示从第一个数开始)while(k=10)(计算计算10 个数)个数)sum=sum+n;(累加)累加)k=k+1;(累计下一个数)累计下一个数)printf(“n sum=%d”,sum);13例例3 计算计算1+2+3+.+10、10个整数求和个整数求和,其算法如下:,其算法如下:设设SUM为累加数,为累加数,K为计数器。为计数器。计算计算 设设sum=0,k=1,1+2+
9、3+4+5+6+7+8+9+10 sum=sum+1 (+k)第一步第一步 k=k+1 sum=sum+2 (+k)k+sum=sum+3 Sum=sum+4 sum=sum+10144-14-1循环语句循环语句例例3 计算计算 设设sum=0,k=1,1+2+3+4+5+6+7+8+9+10 sum=sum+1 (+k)第一步第一步 k=k+1 sum=sum+2 (+k)k+sum=sum+3 Sum=sum+4 sum=sum+10154-14-1循环语句循环语句例例3 计算计算1+2+3+.+10、10个整数求和,其算法如下:个整数求和,其算法如下:设设SUM为累加数,为累加数,K为计
10、数器。为计数器。S1:SUM=0 (累计数开始为累计数开始为0)K=1 (表示从第一个数开始)表示从第一个数开始)S2:当当 K=10 (计算计算10 个数)个数)(否则转否则转s4)s3:SUM=SUM+k (累加)累加)K=K+1(累计下一个数)累计下一个数)S4:打印打印SUM。164-14-1循环语句循环语句 int sum,k;sum=0;(累计数开始为累计数开始为0)k=1;(表示从第一个数开始)表示从第一个数开始)while(k=10)(计算计算10 个数)个数)sum=sum+k;(累加)累加)k=k+1;(累计下一个数)累计下一个数)printf(“n sum=%d”,sum
11、);17程序如下:程序如下:main()从两个例子看,一个循从两个例子看,一个循 int k,sum;环必需有三个值来控制环必需有三个值来控制sum=0;k=1;初始值,循环从那里开始初始值,循环从那里开始while(k=10)终止值,循环在那里结束终止值,循环在那里结束 sum=sum+k;sum=sum+k;k=k+1;k=k+1;控制变量必需增值控制变量必需增值printf(“%d”,sum);printf(“%d”,sum);例:计算计算 1+1+2+3+4+5+6+7+8+9+102+3+4+5+6+7+8+9+1018程序如下:程序如下:main()从两个例子看,一个循从两个例子看
12、,一个循 int k,sum;环必需有三个值来控制环必需有三个值来控制sum=0;k=1;初始值,循环从那里开始初始值,循环从那里开始while(k=10)终止值,循环在那里结束终止值,循环在那里结束 sum=sum+k*(k+1);sum=sum+k*(k+1);k=k+1;k=k+1;控制变量必需增值控制变量必需增值printf(“%d”,sum);printf(“%d”,sum);例:计算计算 1*2+1*2+2*3+3*4+.+10*112*3+3*4+.+10*11194-14-1循环语句循环语句l while while 循环循环,称为当型循环称为当型循环。其格式为:其格式为:wh
13、ile(while(条件条件)/*/*循环体循环体*/*/.当当条件条件满足时(即条件不为零),反复执满足时(即条件不为零),反复执行循环体。行循环体。20程序如下:程序如下:main()从两个例子看,一个循从两个例子看,一个循 int k,sum;环必需有三个值来控制环必需有三个值来控制sum=0;k=1;初始值,循环从初始值,循环从1开始开始while(k=99)终止值,循环在终止值,循环在99结束结束 sum=sum+k;sum=sum+k;k=k+2;k=k+2;控制变量必需增值控制变量必需增值printf(“%d”,sum);printf(“%d”,sum);例:计算计算 1 1+3
14、+5+7+9+99+3+5+7+9+9921程序如下:程序如下:main()从两个例子看,一个循从两个例子看,一个循 int k,sum;环必需有三个值来控制环必需有三个值来控制sum=0;k=2;初始值,循环从初始值,循环从2开始开始while(k=100)终止值,循环在终止值,循环在100结束结束 sum=sum+k;sum=sum+k;k=k+2;k=k+2;控制变量必需增值控制变量必需增值printf(“%d”,sum);printf(“%d”,sum);例:计算计算 2+4+6+8+10+.+1002+4+6+8+10+.+10022程序如下:程序如下:main()从两个例子看,一个
15、循从两个例子看,一个循 int k,sum,t=1;环必需有三个值来环必需有三个值来控制控制sum=0;k=2;初始值,循环从初始值,循环从2开始开始while(k=2)终止值,循环在终止值,循环在100结束结束 sum=sum+k*t;sum=sum+k*t;k=k-2;t=t*(-1);k=k-2;t=t*(-1);控制变量必需增值控制变量必需增值printf(“%d”,sum);printf(“%d”,sum);例:计算计算 2-4+6-8+10+.-1002-4+6-8+10+.-10024 main()float j,sum;sum=0;j=1;while(j=100)sum=sum
16、+1/j;j=j+1;printf(“n j=%f,sum=%f”,j,sum)计算计算 1+1/2+1/3+1/4+.+1/99+1/100 1+1/2+1/3+1/4+.+1/99+1/10025 main()float j,sum;sum=0;j=1;while(j=100)sum=sum+1/j;j=j+1;printf(“n j=%f,sum=%f”,j,sum)计算计算 1+1/2+1/3+1/4+.+1/99+1/100 1+1/2+1/3+1/4+.+1/99+1/10026 main()float j,sum;j=1;sum=0;while(j=100)sum=sum+1/j
17、;注意中间项的注意中间项的 j=j+1;计算计算 printf(“n j=%f,sum=%f”,j,sum)计算计算 1+1/2+1/3+1/4+.+1/99+1/100 1+1/2+1/3+1/4+.+1/99+1/10027 main()int t;float j,sum;j=1;sum=0;t=1;while(j=100)sum=sum+t*1/j;j=j+1;t=(-1)*t;printf(“n j=%f,sum=%f”,j,sum)计算计算 1-1/2+1/3-1/4+.+1/99-1/100 1-1/2+1/3-1/4+.+1/99-1/10028 main()int t;floa
18、t j,sum;j=1;sum=0;t=1;t中间项符号中间项符号 while(j=100)sum=sum+t*1/j;j=j+1;t=t*(-1);中间项符号改变中间项符号改变 printf(“n j=%f,sum=%f”,j,sum)计算计算 1-1/2+1/3-1/4+.+1/99-1/100 1-1/2+1/3-1/4+.+1/99-1/100294-1 4-1 whilewhile语句语句-实例实例lwhile使用使用注意注意 1.1.while(while(0 0).).由于循环的条件表达式恒由于循环的条件表达式恒等于等于0 0,循环体永远也不会执行,是编程者的,循环体永远也不会执
19、行,是编程者的错误错误。例:例:例:例:sum=0;sum=0;k=1;k=1;初始值,循环从初始值,循环从初始值,循环从初始值,循环从1 1开始开始开始开始while(0)while(0)条件为假条件为假条件为假条件为假,循环永远不会执行循环永远不会执行循环永远不会执行循环永远不会执行 sum=sum+k;sum=sum+k;k=k+2;k=k+2;304-1 4-1 whilewhile语句语句-实例实例lwhile使用使用注意注意 2.2.while(while(1 1).).由于循环的条件表达式恒由于循环的条件表达式恒等于等于1 1,所以不可能通过循环控制条件来结束循环体,所以不可能通
20、过循环控制条件来结束循环体的执行,称为的执行,称为“死循环死循环”。例:例:例:例:sum=0;sum=0;k=1;k=1;初始值,循环从初始值,循环从初始值,循环从初始值,循环从1 1开始开始开始开始while(1)while(1)条件永远为真,循环不会终止条件永远为真,循环不会终止条件永远为真,循环不会终止条件永远为真,循环不会终止 sum=sum+k;sum=sum+k;k=k+2;k=k+2;314-1 4-1 whilewhile语句语句-实例实例lwhile使用使用注意注意3.3.为了保证循环正常运行,应该特别注意:为了保证循环正常运行,应该特别注意:循环控制条件循环控制条件 控制
21、条件的初始状态(初始值)控制条件的初始状态(初始值)循环体内部对控制条件的影响循环体内部对控制条件的影响k=1;初始值,循环从那里开始初始值,循环从那里开始while(k=10)终止值,循环在那里结束终止值,循环在那里结束 sum=sum+k;sum=sum+k;k=k+1;k=k+1;控制变量必需改变控制变量必需改变324-24-2whilewhile语句语句-实例实例l例:例:分析程序的运行结果分析程序的运行结果#include include main()main()int n=0;int n=0;while(n3)while(n3)printf(”n is%dn”,n);printf(
22、”n is%dn”,n);printf(”Thats all this program printf(”Thats all this program does.n”);does.n”);结果:结果:程序将不停的打印程序将不停的打印“n is 0”,直至终止程序直至终止程序l无法正常终止的程序,称为无法正常终止的程序,称为“死循环死循环”。结论:结论:在在while语句语句循环体循环体中,一定要有能够中,一定要有能够对循环控对循环控制条件产生影响的语句制条件产生影响的语句。避免出现。避免出现“死循环死循环”现象。现象。334-14-1循环语句循环语句l do-while do-while 循环循
23、环,称为直到循环称为直到循环。其格式为:其格式为:do do /*/*循环体循环体*/*/.while(while(条件条件););当当条件条件满足时(即条件不为零),满足时(即条件不为零),反复执行上面循环体。反复执行上面循环体。34 do-while型型 while 型型 main()main()int k,sum;int k,sum;sum=0;sum=0;k=1;k=1;do while(k=7)sum=sum+k;sum=sum+k;sum=sum+k;sum=sum+k;k=k+1;k=k+1;k=k+1;k=k+1;while(k=7);while(k=7);pintf(“%d”
24、,sum);pintf(“%d”,sum);printf(“%d”,sum);printf(“%d”,sum);例:计算计算 1+1+2+3+4+5+6+72+3+4+5+6+7354-1 4-1 do-whiledo-while语句语句l例如用例如用do-while do-while 语句求语句求 n.n.程序如下:程序如下:main()main()int k,sum;int k,sum;sum=0;sum=0;k=1;k=1;初始值,循环从初始值,循环从初始值,循环从初始值,循环从1 1开始开始开始开始 do do sum=sum+k;sum=sum+k;sum=sum+k;sum=sum
25、+k;k=k+1;k=k+1;k=k+1;k=k+1;控制变量必需增值控制变量必需增值控制变量必需增值控制变量必需增值 while(k=100)while(k=100)while(k=100)while(k=100);终止值,循环在终止值,循环在终止值,循环在终止值,循环在k=100k=100结束结束结束结束 printf(“%d”,sum);printf(“%d”,sum);printf(“%d”,sum);printf(“%d”,sum);100100N=1N=1364-1 4-1 do-whiledo-while语句语句ldo-while语句特点语句特点 do-whiledo-while
26、与与whilewhile的最大区别:的最大区别:do-whiledo-while语句语句先执行循环体先执行循环体然后然后再判断再判断循环循环控控制条件制条件,而而whilewhile却是先判断条件之后再执行却是先判断条件之后再执行循环体。循环体。k=1;k=1;do while(k=7)sum=sum+k;sum=sum+k;sum=sum+k;sum=sum+k;k=k+1;k=k+1;k=k+1;k=k+1;while(k=7);while(k=7);pintf(“%d”,sum);pintf(“%d”,sum);374-1 4-1 do-whiledo-while语句语句ldo-whil
27、e语句特点语句特点使用使用do-whiledo-while构成的循环,循环体部分构成的循环,循环体部分至少要至少要执行一次执行一次;而采用;而采用whilewhile和和forfor构成的循环,循构成的循环,循环体部分有可能一次也不会执行。环体部分有可能一次也不会执行。k=8;k=8;do while(k=7)sum=sum+k;sum=sum+k;sum=sum+k;sum=sum+k;k=k+1;k=k+1;k=k+1;k=k+1;while(k=7);while(k=7);pintf(“%d”,k);pintf(“%d”,k);执行一次,执行一次,k=9 k=9 一次都不执行一次都不执行
28、 384-2 4-2 forfor语句语句l forfor结构也是一种当型循环结构也是一种当型循环。它把它把初始值;初始值;终止值;步长全放在终止值;步长全放在forfor条件里。条件里。其格式其格式为:为:for(for(初始值;终止值;步长初始值;终止值;步长)/*/*循环体循环体*/*/.当当初始值初始值不超过不超过终止值终止值时,反复执行循环时,反复执行循环体。体。ForFor循环与循环与whilewhile循环可以互换。循环可以互换。39 while型型 for 型型 main()main()int I,p;int I,p;p=0;I=1 p=0;while(I=7)for(I=1;
29、I=7;I+)p=p+I;p=p+I;p=p+I;p=p+I;i=i+1;i=i+1;printf(“%d”,p);printf(“%d”,p);printf(“%d”,p);printf(“%d”,p);例:计算计算 1+1+2+3+4+5+6+72+3+4+5+6+7404-2 4-2 forfor语句语句lforfor语句的变化形式语句的变化形式forfor语句中的三个表达式中的任意一个都是可以省略语句中的三个表达式中的任意一个都是可以省略的,但是的,但是分号分号不能省略。不能省略。1.1.可以将初始值放在外面:可以将初始值放在外面:main()main()int I,p;int I,p
30、;p=0;p=0;I=1;I=1;for(;I=7;I+)for(;I=7;I+)p=p+I;p=p+I;p=p+I;p=p+I;分号分号不能省略。不能省略。printf(“%d”,p);printf(“%d”,p);printf(“%d”,p);printf(“%d”,p);414-2 4-2 forfor语句语句2.2.可以将可以将表达式表达式3 3放入循环体里,放入循环体里,main()int I,p;p=0;for(I=1;I=7;)p=p+I;p=p+I;I=I+1;I=I+1;printf(“%d”,p);printf(“%d”,p);424-2 4-2 forfor语句语句3 3
31、.省略表达式省略表达式1 1和表达式和表达式3 3,则:,则:forfor(;(;表达式表达式2 2;);)p=0;k=1;for(;k=7;)p=p+k;p=p+k;k=k+1;k=k+1;就等同于:就等同于:whilewhile(表达式表达式 )据此结论:所有用据此结论:所有用whilewhile语句语句实现的循环实现的循环都可以用都可以用forfor语句语句实现。实现。434-2 4-2 forfor语句语句4.4.表达式表达式1 1、2 2、3 3全省略全省略,则:,则:forfor (;)(;)就等同于:就等同于:whilewhile (1)(1)死循环。死循环。444-3 4-3
32、循环嵌套循环嵌套l一个循环体内又包含另一个完整的循环结构一个循环体内又包含另一个完整的循环结构,称为循环的嵌套,内嵌的循环中还可以嵌套,称为循环的嵌套,内嵌的循环中还可以嵌套,这就是多层循环。这就是多层循环。三种循环(三种循环(while,do-while,for)while,do-while,for)可以互相嵌可以互相嵌套套如:如:while()for(;)while()for(;).while()while()while()while().454-3 4-3 典型非数值典型非数值(图型图型)问题问题-例例1 1l例例1 1:打印边长为打印边长为m m的正方型的正方型要求:从键盘输入要求:从
33、键盘输入m m值,输出值,输出m m行每行行每行m m个个*号。号。例:输入例:输入m=4m=4,输出的图形如下:输出的图形如下:*l算法分析与设计:算法分析与设计:1.1.输入输入 m m,2.2.重复重复打印打印 m m 行,每行打印行,每行打印 m m 个个 *;加细:加细:1.1.输入输入 m m;2.for(k=1;k=2.for(k=1;k=m m;k+);k+)打印一行中的打印一行中的 m m 个个 *;464-3 4-3 典型非数值典型非数值(图型图型)问题问题-例例1 1加细:加细:1.1.输入输入m m;2.2.for(k=1;k=for(k=1;k=m m;k+);k+)
34、打印打印 m m 个个 *;换新行换新行;加细:加细:1.1.输入输入m m;2.2.for(k=1;k=for(k=1;k=m m;k+);k+)for(j=1;j=for(j=1;j=m m;j+);j+)printf(printf(”*”)”*”);printf(printf(”nn”););474-3 4-3 典型非数值典型非数值(图型图型)问题问题-例例1 1l整理,得到程序如下:整理,得到程序如下:#include include main()main()int k,m,jint k,m,j;scanf(scanf(”%d%d”,&m),&m);forfor(k=1;k=m;k+)
35、(k=1;k=m;k+)/*/*控制打印控制打印m m行行*/*/for for(j=1;j=m;j+)(j=1;j=m;j+)/*/*打印的打印的m m个个*号号*/*/printf printf(”*”);printf(printf(”nn”);484-3 4-3 循环语句小结循环语句小结l循环语句可以嵌套,循环可以并列,但不能交循环语句可以嵌套,循环可以并列,但不能交叉。叉。对对 对对 错错 494-34-3循环语句小结循环语句小结l为了保证循环体正常运行,应该特别注意:为了保证循环体正常运行,应该特别注意:循环控制条件循环控制条件 控制条件的初始状态(初始值)控制条件的初始状态(初始值
36、)循环体内部对控制条件的影响循环体内部对控制条件的影响以上三个方面相互配合,相互影响,共同完成以上三个方面相互配合,相互影响,共同完成循环控制循环控制504-3 4-3 转移语句转移语句l转移语句的作用转移语句的作用 改变程序的运行流程改变程序的运行流程。lC语言转移语句语言转移语句 break continue goto return514-3 4-3 breakbreak语句语句l格式格式breakbreak;lbreakbreak语句的功能语句的功能 1.1.在在switchswitch语句中结束语句中结束casecase子句,使控制转子句,使控制转到到switchswitch语句之外。
37、语句之外。2.2.在在循环循环语句的循环体中使用,结束循环过语句的循环体中使用,结束循环过程,使控制转移到整个程,使控制转移到整个循环语句之外循环语句之外的下一的下一条语句处。条语句处。524-3 4-3 breakbreak语句语句-实例实例l例例:求素数求素数,2,3,5,7,9,2,3,5,7,9,1111,25 25 l整数整数n n?素数,用素数,用k=2 n/2k=2 n/2的数除的数除n,n,如果所有的如果所有的k k都都有有 n%k!=0,n%k!=0,则则 n n是素数。是素数。main()main()int k,nint k,n,flag;flag;scanf(“%d”,&
38、n);scanf(“%d”,&n);for(k=2;k=n/2;k+)for(k=2;k=n/2;k+)if(n%k=0)flag=0;printf(“no”);break;if(n%k=0)flag=0;printf(“no”);break;else flag=1;else flag=1;if(flag=1)printf(“n if(flag=1)printf(“n 是素数是素数%d“,n);d“,n);534-3 4-3 breakbreak语句语句-实例实例l例例:计算圆的面积,面积大于计算圆的面积,面积大于100100结束。结束。#define PI 3.1416define PI 3
39、.1416 main()main()int r;int r;float area;float area;for(r=1;r=100;r+)for(r=1;r100)if(area100)break;break;/*/*控制退出循环控制退出循环*/*/printf(“%f“,area);printf(“%f“,area);544-3 4-3 breakbreak语句语句-实例实例lbreakbreak语句使用注意:语句使用注意:1 1、在嵌套循环中,、在嵌套循环中,breakbreak语句仅能退出一层语句仅能退出一层(当前当前)循环。循环。2 2、若在循环语句中包含了、若在循环语句中包含了swi
40、tchswitch语句,那么语句,那么switchswitch语句中的语句中的breakbreak语句仅能使控制退出语句仅能使控制退出switchswitch语句。语句。3 3、breakbreak语句并不是程序设计中必不可少的语句,语句并不是程序设计中必不可少的语句,可以通过改变程序的结构去掉。可以通过改变程序的结构去掉。4 4、breakbreak语句不能用于循环语句和语句不能用于循环语句和switchswitch语句之外语句之外的任何其它语句中。的任何其它语句中。554-3 4-3 continuecontinue语句语句lcontinue语句格式语句格式continuecontinue
41、;lcontinuecontinue语句的功能语句的功能 continuecontinue语句仅能在循环语句中使用语句仅能在循环语句中使用.它的作用不是结束循环,而是开始一次新的循环。它的作用不是结束循环,而是开始一次新的循环。对于对于forfor语句,将控制转到语句,将控制转到执行表达式执行表达式3 3和和条件测条件测试试部分部分 对于对于whilewhile和和do-whiledo-while语句,将控制转到语句,将控制转到条件测试条件测试部分部分 从逻辑上讲,改变从逻辑上讲,改变ifif语句的条件表达式所表示的条语句的条件表达式所表示的条件,就可以不需要使用件,就可以不需要使用conti
42、nuecontinue语句。语句。564-3 4-3 continuecontinue语句语句-实例实例l把把100200100200之间的不能被之间的不能被3 3整除的数输出。整除的数输出。main()main()int n;int n;for for(n=100;n=200;n+)(n=100;n=200;n+)if(n%3=0)if(n%3=0)continuecontinue;/*/*结束本次循环,不进行后续结束本次循环,不进行后续 的的printfprintf操作操作*/*/printf(“%d”,n);printf(“%d”,n);例例例例C3_6201C3_6201C3_6201
43、C3_6201改变改变ifif语句的语句的条件条件表达式表达式,可以,可以不需不需要使用要使用continuecontinue。574-3 4-3 gotogoto语句语句lgoto语句格式语句格式gotogoto 标号标号;lgotogoto语句的功能语句的功能1 1、将控制转移到标号所指定的语句处继续执行。、将控制转移到标号所指定的语句处继续执行。2 2、标号的唯一功能就是作为、标号的唯一功能就是作为gotogoto语句的目标。标号语句的目标。标号的作用域是它所在的整个函数。的作用域是它所在的整个函数。lgotogoto语句的使用说明语句的使用说明在在C C语言中,语言中,gotogoto
44、语句并不是必不可少的,使用语句并不是必不可少的,使用gotogoto语句的地方都可以用语句的地方都可以用C C的其他控制流程语句改写。的其他控制流程语句改写。58lolloll把把100200100200之间的不能被之间的不能被3 3整除的数输出。整除的数输出。main()main()int n;int n;loop:loop:forfor(n=100;n=200;n+)(n=100;n=200;n+)if(n%3=0)if(n%3=0)goto loopgoto loop;/*/*转移到转移到loop:loop:标号处标号处*/*/printf(“%d”,n);printf(“%d”,n);
45、例例例例C3_6201C3_6201C3_6201C3_6201594-3 4-3 returnreturn语句语句lretunrn语句格式语句格式格式一:格式一:returnreturn;格式二:格式二:return(return(表达式);表达式);lreturnreturn语句的功能语句的功能 1.1.returnreturn语句使程序从被调用函数中返回到语句使程序从被调用函数中返回到调用函数的调用处继续运行。调用函数的调用处继续运行。2.2.如果如果returnreturn后跟一表达式,则该表达式的后跟一表达式,则该表达式的值会从被调用函数中带回到调用它的函数,值会从被调用函数中带回到
46、调用它的函数,称为称为返回值返回值。604-4 4-4 do-whiledo-while语句语句-实例实例l例例4-124-12:求非线性方程求非线性方程 x=1+arctanx=1+arctanx x=0=0的一个实根。的一个实根。取初值取初值Xo=1.0,Xo=1.0,精度要求精度要求eps=0.000001.eps=0.000001.并改写成如下并改写成如下迭代格式:迭代格式:Xn+1=1+arctanXnXn+1=1+arctanXn算法分析:算法分析:令令:Xo=X=1.0,Xo=X=1.0,将将XoXo反复代入方程:反复代入方程:X=1+arctan(Xo)X=1+arctan(X
47、o)如果如果|X-Xo|=0.000001,X-Xo|=eps);while(fabs(x-xo)=eps);printf(“x=%11.fn”,x);printf(“x=%11.fn”,x);624-4 4-4 do-whiledo-while语句语句-实例实例l例例C3_5301.CC3_5301.C:输入一个正整数,要求以相反的顺序输入一个正整数,要求以相反的顺序输出该数。例如:输入输出该数。例如:输入1234512345,则输出为,则输出为5432154321。基本思路基本思路:可以从个位开始,按位输出整数的每一位:可以从个位开始,按位输出整数的每一位 main()main()unsi
48、gned int number;unsigned int number;printf(Input the number:);printf(Input the number:);scanf(%d,&number);scanf(%d,&number);do do printf(%d,number%10);printf(%d,number%10);number=number/10;number=number/10;/*number/*number缩小缩小1010倍倍*/*/whilewhile(number!=0);(number!=0);例例例例C3_5301C3_5301C3_5301C3_53
49、01 思考:使用思考:使用whilewhile或或forfor语句,如何实现?语句,如何实现?例例例例C3_53011C3_53011C3_53011C3_53011两个程序有何区别?两个程序有何区别?前面的程序可以处理数字前面的程序可以处理数字0 0,后面的程序不能处理,后面的程序不能处理634-4 4-4 do-whiledo-while语句语句-实例实例l例例C3_5301.CC3_5301.C:输入一个正整数,要求以相反的顺序输入一个正整数,要求以相反的顺序输出该数。例如:输入输出该数。例如:输入1234512345,则输出为,则输出为5432154321。基本思路基本思路:分别把各位
50、取出来。:分别把各位取出来。a=n/10000;a=n/10000;b=n%10000/1000;b=n%10000/1000;c=n%1000/100;c=n%1000/100;d=n%100/10;d=n%100/10;e=n%10;e=n%10;例例例例C3_5301C3_5301C3_5301C3_5301 思考:使用思考:使用whilewhile或或forfor语句,如何实现?语句,如何实现?例例例例C3_53011C3_53011C3_53011C3_53011两个程序有何区别?两个程序有何区别?前面的程序可以处理数字前面的程序可以处理数字0 0,后面的程序不能处理,后面的程序不能