C程序设计-第7章_第1页
C程序设计-第7章_第2页
C程序设计-第7章_第3页
C程序设计-第7章_第4页
C程序设计-第7章_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第六章第六章 循环结构程序设计循环结构程序设计本章内容本章内容1.循环结构概述循环结构概述2.goto语句及用语句及用goto语句构成的循环语句构成的循环3.While语句的使用语句的使用4.Do While语句的使用语句的使用5.For 语句的使用语句的使用6.循环的嵌套循环的嵌套7.Break语句和语句和Continue语句的使用语句的使用8.程序举例程序举例 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计2输入输入10个整数,求它们的平均值,并输出大于平均值个整数,求它们的平均值,并输出大于平均值的个数。的个数。main() int a,b,c,d,e,f,g,h,i,

2、j,n=0; float average; scanf(“%d”, &a); scanf(“%d”, &b); scanf(“%d”, &c); scanf(“%d”, &d); scanf(“%d”, &e); scanf(“%d”, &f); scanf(“%d”, &g); scanf(“%d”, &h); scanf(“%d”, &i); scanf(“%d”, &j); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计3average=(a+b+c+d+e+f+g+h+i+j)/10;if(

3、 aaverage ) n=n+1;if( baverage ) n=n+1;if( caverage ) n=n+1;if( daverage ) n=n+1;if( eaverage ) n=n+1;if( faverage ) n=n+1;if( gaverage ) n=n+1;if( haverage ) n=n+1;if( iaverage ) n=n+1;if( javerage ) n=n+1;printf(“n=%d,n); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计46.1 概概 述述 循环结构循环结构是程序中一种很重要的结构。其特点是,是程序中一种很重

4、要的结构。其特点是, 在给定在给定条件成立时,反复执行某程序段,直到条件不成立为止。条件成立时,反复执行某程序段,直到条件不成立为止。 给定给定的条件称为的条件称为循环条件循环条件,反复执行的程序段,反复执行的程序段称为循环体称为循环体。语言。语言提供了多种循环语句,可以组成各种不同形式的循环结构。提供了多种循环语句,可以组成各种不同形式的循环结构。 (1)用)用goto语句和语句和if语句构成循环语句构成循环 (2)用)用while语句语句 (3)用)用do-while语句语句 (4) 用用for语句语句 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计5表达式语句表达式语句a

5、) 当型循环当型循环b) 直到循环直到循环非00非00 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计66.2 goto语句及用语句及用goto语句构成的循环语句构成的循环 一、无条件转移语句一、无条件转移语句goto语句语句 一般格式:一般格式: goto 语句标号语句标号; 其中其中语句标号语句标号是按标识符规定书写的符号,放在某一语句是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号行的前面,标号后加冒号(:)。语句标号起标识语句的作用,。语句标号起标识语句的作用,与与goto 语句配合使用。语句配合使用。 如:如: label: i+; goto label;

6、 语言不限制程序中使用标号的次数,但各标号不得重名。语言不限制程序中使用标号的次数,但各标号不得重名。 goto语句的语义是改变程序流向,转去执行语句标号所标识语句的语义是改变程序流向,转去执行语句标号所标识的语句。的语句。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计7二、用二、用goto语句与语句与if语句实现循环语句实现循环用goto语句与if语句实现循环的形式:形式形式1:loop1: 语句;语句; if (表达式)(表达式) goto loop1;形式形式2:loop1: if (表达式)(表达式) goto loop2; 语句;语句; goto loop1;loo

7、p2 : 注意:注意:在结构化程序设计中一般不主张使用在结构化程序设计中一般不主张使用goto语句,语句, 以以免造成程序流程的混乱,使理解和调试程序都产生困难。免造成程序流程的混乱,使理解和调试程序都产生困难。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计8例例1: 编程序求:编程序求:s=1+2+3+100main() int s=0,n=1; loop: s=s+n; n+; if (n100) goto loop2; s=s+n; n+; goto loop1; loop2: printf(S=%d,s); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设

8、计9例例2:统计从键盘输入一行字符的个数。:统计从键盘输入一行字符的个数。 #includestdio.h void main() int n=0; printf(input a stringn); loop: if(getchar()!=n) n+; goto loop; printf(%d,n); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计106.3 while 语句语句 执行过程执行过程是:计算表达式的值,当值为真是:计算表达式的值,当值为真(非非0)时,时, 执执行循环体语句。如右上图。行循环体语句。如右上图。 while语句的一般形式为:语句的一般形式为: whi

9、le(表达式表达式) 语句;语句; 其中其中表达式表达式是循环条件,是循环条件,语句语句为为循环体,若是多个语句则必须用循环体,若是多个语句则必须用 组成复合语句组成复合语句。表达式语句非00 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计11例例1: 编程序求:编程序求:s=1+2+3+100main() int s=0,n=1; while (n=100) s=s+n; n+; printf(S=%d,s); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计126.4 Dowhile语句 do-while语句的一般形式为:语句的一般形式为: do 语句;语句;

10、 while (表达式表达式); 其中:语句是循环体, 表达式是循环条件。 表达式语句非00 执行过程:执行过程:先执行循环体语句一次, 再判别表达式的值,若为真(非0)则继续循环,否则终止循环。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计13例例1: 编程序求:编程序求:s=1+2+3+100main() int s=0,n=1; do s=s+n; n+; while (n=100); printf(S=%d,s); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计14使用使用while和和do-while语句应注意以下几点:语句应注意以下几点: 1.在在

11、if语句,语句,while语句中,表达式后面都不能加分语句中,表达式后面都不能加分号,号, 而在而在 do-while语句的表达式后面则必须加语句的表达式后面则必须加分号分号。 2.do-while语句也可以组成多重循环,而且也可以语句也可以组成多重循环,而且也可以和和while语句相互语句相互嵌套嵌套。 3.当循环体由多个语句组成时,也必须用当循环体由多个语句组成时,也必须用括起来括起来组成一个复合语句。组成一个复合语句。 4.如果循环至少要执行一次,如果循环至少要执行一次,while和和do-while语句语句可以相互可以相互替换替换。 C语言程序设计 第六章第六章 循环结构程序设计循环结

12、构程序设计156.5 for语句语句 for语句是语言所提供的功能更强,使用更广泛的一种语句是语言所提供的功能更强,使用更广泛的一种循环语句。循环语句。一、使用一般形式为:一、使用一般形式为: for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句;语句; 其中其中:表达式表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。 表达式表达式2通常是循环条件,一般为关系表达式或逻辑表达式。 表达式表达式3通常可用来修改循环变量的值,一般是赋值语句。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计16for语句的

13、执行过程:语句的执行过程: 1.首先计算首先计算表达式表达式1的值。的值。 2.再计算再计算表达式表达式2的值,若值为的值,若值为真真(非非0)则执行循环体一次,则执行循环体一次, 否则否则跳出循环。跳出循环。 3.然后再计算然后再计算表达式表达式3的值,的值,转回第转回第2步重复执行。步重复执行。 在整个在整个for循环过程中,表达循环过程中,表达式式1只计算一次,表达式只计算一次,表达式2和表达和表达式式3则可能计算多次。循环体可能则可能计算多次。循环体可能多次执行,也可能一次都不执行。多次执行,也可能一次都不执行。表达式2语句非00语句求解表达式1求解表达式3for 语句的执行过程语句的

14、执行过程 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计17例:用例:用for语句计算语句计算s=1+2+3+.+99+100 main() int n,s=0; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); 本例本例for语句中的表达式语句中的表达式3为为n+,实际上也是一,实际上也是一种赋值语句,相种赋值语句,相当于当于n=n+1,以改变循环变量的值。,以改变循环变量的值。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计18二、在使用二、在使用for语句中要语句中要注意注意以下几点:以下几点: 1.for语句中的各表达式

15、都可省略,但语句中的各表达式都可省略,但分号间隔符分号间隔符不能少不能少 如:如:for(;表达式;表达式2;表达式;表达式3) 省去了表达式省去了表达式1。 for(表达式表达式1;表达式;表达式3) 省去了表达式省去了表达式2。 for(表达式表达式1;表达式;表达式2;) 省去了表达式省去了表达式3。 for(;) 省去了全部表达式。省去了全部表达式。 2.在循环变量已赋初值时,可省去表达式在循环变量已赋初值时,可省去表达式1。如省去表达式。如省去表达式2或表达式或表达式3则将造成无限循环,这时应在循环则将造成无限循环,这时应在循环体内设法体内设法结束循结束循环环。 C语言程序设计 第六

16、章第六章 循环结构程序设计循环结构程序设计19main() int n=1,s=0; for(;n=100;n+) s=s+n; printf(s=%dn,s); main() int n=1,s=0; for(;n100) break; printf(s=%dn,s); for( ; ; )等效于等效于while( 1) C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计21 3. for语句中的语句中的 三个表达式都可以是三个表达式都可以是逗号表达式逗号表达式, 即每个表即每个表达式都可由多个达式都可由多个表达式组成。表达式组成。 例:例:main() int n,s; for

17、(n=1,s=0;n=100;n+) s=s+n; printf(s=%dn,s); main() int n,s; for(n=1,s=0;n=100; s+=n, n +); printf(s=%dn,s); 这里为什么要加; C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计22例:统计从键盘输入一行字符的个数。例:统计从键盘输入一行字符的个数。 #includestdio.h void main() int n=0; printf(input a string:n); for(;getchar()!=n;n+); printf(%d,n); 说明:说明:本例中,省去了本例中

18、,省去了for语句的表达式语句的表达式1,表达式,表达式3也不是用也不是用来修改循环变量,而是用作输入字符的计数。这样,来修改循环变量,而是用作输入字符的计数。这样, 就把本应在就把本应在循环体中完成的计数放在表达式中完成了。因此循环体是空语句。循环体中完成的计数放在表达式中完成了。因此循环体是空语句。应注意的是,应注意的是,空语句后的分号不可少,空语句后的分号不可少,如缺少此分号,则把后面如缺少此分号,则把后面的的printf 语句当成循环体来执行。语句当成循环体来执行。 反过来说,反过来说,如循环体不为空语句时,如循环体不为空语句时, 决不能在表达式的括号决不能在表达式的括号后加分号,后加

19、分号, 这样又会认为循环体是空语句而不能执行循环体。这样又会认为循环体是空语句而不能执行循环体。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计236.6 循环的嵌套循环的嵌套 for语句也可与语句也可与while,do-while语句相互嵌套,构成多重循环。语句相互嵌套,构成多重循环。以下形式都合法的嵌套。以下形式都合法的嵌套。(4) while() for() (1) while( ) while( ) (2)do do while() while();(3) for() for() C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计24(7) while()

20、do while(); (5) for( ) while( ) (6) dofor( ) while();(8) for() do while(); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计25例:打印如下形式的九九乘法表例:打印如下形式的九九乘法表.main() int x,y; for(x=1;x=9;x+) for(y=1;y100) break; s=s+n; n+; printf(s=%dn,s); C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计29 分析下面程序的功能分析下面程序的功能main() char a,b; printf(input

21、a string:n); b=getchar(); while(a=getchar()!=n) if(a=b) printf(same charactern); break; b=a; 功能是:功能是: 检查输入的一行中有无相邻两字符相同。检查输入的一行中有无相邻两字符相同。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计30 done=0; for( ) for ( ) while ( ) if ( ) done=1; break; if (done) break; if (done) break; 多层嵌套循环:多层嵌套循环: 可用可用goto退出退出; 而而break;只

22、能退出只能退出本层循环。本层循环。 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计31main() int n; for(n=7;n=100;n+) if (n%7!=0) continue; printf(%d ,n); main() int n; for(n=7;n=3) fn=fn-1+fn-2 (n=3) 程序如下程序如下 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计33main() main() long f1,f2; long f1,f2; int int k; k; f1=1;f2=1; f1=1;f2=1; for(k=1;k=20;k+) f

23、or(k=1;k=20;k+) printf(%12ld %12ld,f1,f2); printf(%12ld %12ld,f1,f2); if(k%2=0) printf(n if(k%2=0) printf(n); ); f1=f1+f2; f1=f1+f2; f2=f2+f1; f2=f2+f1; C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计34 例例6.8 判断一个整数判断一个整数m是否是素数。是否是素数。 素数是只能被素数是只能被1 和本身整除的数。和本身整除的数。 教材教材Pg.126 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计35#include math.hvoid main() int m,i,k; printf(Enter m=n); scanf(%d,&m); k=sqrt(m); for(i=2;ik) printf(Yesn); else printf(Non); 输入输入m当当ikYN打印打印Yesbreak打印打印No程序流程图程序流程图 C语言程序设计 第六章第六章 循环结构程序设计循环结构程序设计36例例6.9 打印打印输出输出100200之间之间的素数。的素数。 #include math.hvoid main() int n=0,i,k,m; for (m=101;m=199;m+) k=sqr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论