C语言程序设计课件第6章_第1页
C语言程序设计课件第6章_第2页
C语言程序设计课件第6章_第3页
C语言程序设计课件第6章_第4页
C语言程序设计课件第6章_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计课件第6章 第六章第六章 循环控制循环控制 goto goto语句语句 whilewhile语句语句 do-whiledo-while语句语句 forfor语句语句 breakbreak语句语句 continuecontinue语句语句 练习练习 C语言程序设计课件第6章 6.1 概述概述 循环:循环:反复执行称为反复执行称为“循环体循环体”的程序段。的程序段。 循环控制常用于数学迭代、对象遍历等问循环控制常用于数学迭代、对象遍历等问 题的求解,几乎所有实用程序都包含循环。题的求解,几乎所有实用程序都包含循环。 C C语言中用如下语句实现循环语言中用如下语句实现循环: : 1 1

2、、用、用gotogoto语句和语句和ifif语句构成循环。语句构成循环。 2 2、用、用whilewhile语句。语句。 3 3、用、用do-whiledo-while语句。语句。 4 4、用、用forfor语句。语句。 C语言程序设计课件第6章 6.2 goto语句语句 一般形式:一般形式: goto 语句标号语句标号 作作 用用: 无条件转向无条件转向“语句标号语句标号”处执处执 行。行。 “语句标号语句标号”是一个标识符,它表示是一个标识符,它表示 程序指令的地址程序指令的地址。 结构化程序设计方法主张限制使用结构化程序设计方法主张限制使用gotogoto语句。语句。 gotogoto语

3、句有两种用途,一是与语句有两种用途,一是与ifif语句一起构成语句一起构成 循环结构,另一是从循环体中跳转到循环体外。循环结构,另一是从循环体中跳转到循环体外。 C语言程序设计课件第6章 例例6.1 用用if语句和语句和goto语句构成循环,语句构成循环, 求求 。 100 1i i main() int i,sum=0; i = 1; loop: if (i = 100) /*标号表示程序指令的地址标号表示程序指令的地址,当当i100时,执行加法时,执行加法 */ sum = sum + i; i+; goto loop; /*无条件转向标号无条件转向标号loop处的指令处的指令 */ pr

4、intf(%d,sum); sum=sum+i i=i+1 i=100 假假 真真 i=1,sum=0 C语言程序设计课件第6章 6.3 while语句语句 一般形式:一般形式:while (表达式表达式) 语句语句 作用:作用:实现实现“当型当型”循环。循环。 当当“表达式表达式”非非0 0(真)时,(真)时, 执行while语句中的内嵌“语句”。 “语句语句”是被循环执行的程序,称是被循环执行的程序,称 为为“循环体循环体”。 特点:特点:先判先判“表达式(条件)表达式(条件)”, ,后执行语句。后执行语句。 循环体如果包含一个以上的语句,应该以复合语句形式出现循环体如果包含一个以上的语句

5、,应该以复合语句形式出现. . 在循环体中应有使循环趋向于结束的语句在循环体中应有使循环趋向于结束的语句。 语句语句 表达式表达式 假假 真真 当当P为真为真 A C语言程序设计课件第6章 例例6.2 流程图流程图: 100 1i i sum=sum+i i=i+1 i=100 假假 真真 i=1,sum=0 main() int i,sum=0; /*为循环赋初值为循环赋初值 */ i = 1; whie (i = 100) /*“当型当型”循环循环*/ sum = sum + i; i+; /* 使循环趋于结束使循环趋于结束*/ printf(%d,sum); i=100 真真 假假 su

6、m=sum+i i=i+1 i=1,sum=0 C语言程序设计课件第6章 例例6.3从任意从任意 n 个实数中选出最大数和最小数个实数中选出最大数和最小数 main() int n , i = 1; float max , min , x ; printf(“input n , x :”); scanf(“%d%f ”, max = min = x ; while( imax) max = x; else if (xn) a = m; b = n; else a = n; b = m; r = a%b; while (r != 0) a = b; b = r ; r = a%b ; print

7、f(“%ld与与%ld的最大公约数是:的最大公约数是:%ldn” , m, n, b); getch(); main() long m, n, r, a, b; printf (“input m, n:”); scanf (“%ld%ld”, if (mn) a = m; b = n; else a = n; b = m; while (b != 0) r = a%b ; a = b; b = r ; printf(“%ld与与%ld的最大公约数是:的最大公约数是:%ldn” , m, n, a); getch(); C语言程序设计课件第6章 6.4 do-while语句语句 一般形式:一般形

8、式: do 语句语句 while (表达式表达式) 特点特点:“直到型直到型”循环结构。循环结构。 先执行一次先执行一次“语句语句”,后判,后判“表达式表达式”,当,当“表表 达式达式”非非0,再执行,再执行“语句语句”,直到,直到“表达式表达式” 为为0,循环结束。,循环结束。 直到直到P为假为假 语语 句句 语句语句 条件条件P 非0 0 C语言程序设计课件第6章 例例6.5 用用do-while语句求语句求 。 main() int i,sum=0; i = 1; do sum = sum + i; i+; while (i100”,这两者是等同的。,这两者是等同的。 2、一般情况下,同

9、一个问题,既可以用、一般情况下,同一个问题,既可以用while循环处理,循环处理, 也可以用也可以用do-while循环处理循环处理。 100 1i i i=1,sum=0 直到直到i100 sum=sum+i i=i+1 sum=sum+i i=i+1 i0) ; printf (“%ld是是%d位数位数n” , m, n); getch(); C语言程序设计课件第6章 . ! 1 . !3 1 !2 1 ! 1 1 1 n e求求e的近似值。的近似值。 直到某一项的值小于或等于直到某一项的值小于或等于10-7为止。为止。 main() int n; float sum, t, m; n=1

10、; sum=1; m=1; do t = 1/m; sum+=t; n+; m=m*n; while(t1e-7); printf(“e = %f n” , sum); getch(); 例例6.7 C语言程序设计课件第6章 6.5 for语句语句 forfor语句常用于循环次数已知的循环控制语句常用于循环次数已知的循环控制; ; 也可以用于循环次数不确定而只给出循环结束条件的情况,也可以用于循环次数不确定而只给出循环结束条件的情况, 它完全可以代替它完全可以代替whilewhile语句语句。 一般形式:一般形式: for(表达式(表达式1;表达式表达式2;表达式表达式3) 语句语句 执行过程

11、:执行过程: (1)求表达式1; (2)求表达式2,若为“真”,执行“语句”; 若为假,转第(5)步。 (3)求表达式3。 (4)转第(2)步。 (5)执行for语句下面的语句。 循环初始条件循环初始条件 判别循环条件判别循环条件 修改循环条件修改循环条件 C语言程序设计课件第6章 for (i=1;i=100;i+) sum = sum + i; 这里,循环条件由变量这里,循环条件由变量i设定,变量设定,变量i称为称为“循环变量循环变量”。 这是这是for语句的典型用法:已知循环次数。(本语句的典型用法:已知循环次数。(本 例例100次)。次)。 “表达式表达式1”,循环初始条件(,循环初始

12、条件(i=1)。)。 “表达式表达式2”,循环条件(,循环条件(i=100)。)。 “表达式表达式3”,修改循环条件(,修改循环条件(i+)。)。 C语言程序设计课件第6章 注:注:for循环中,表达式循环中,表达式1仅求解一次;执行循环体后才仅求解一次;执行循环体后才 求解表达式求解表达式3。先判断后执行。先判断后执行。 例、用例、用for语句语句 100 1i i main() int i, sum=0; for(i=1;i=100;i+) sum=sum+i; printf(%dn,sum); 上述上述for语句也可以用如下语句也可以用如下while语句表示:语句表示: i = 1; w

13、hile (i = 100) sum = sum + i; i+; C语言程序设计课件第6章 几点说明几点说明 1. for语句中的表达式语句中的表达式1:可以给循环变量赋初可以给循环变量赋初 值,亦可以是与循环变量无关的其它表达式,值,亦可以是与循环变量无关的其它表达式, 甚至表达式甚至表达式1可以省略。若省略,则应在可以省略。若省略,则应在for 语句前对循环变量赋初值。注意,表达式语句前对循环变量赋初值。注意,表达式1 省略时,其后的分号不能省略。此处的分号省略时,其后的分号不能省略。此处的分号 不是语句的一部分,而是表达式的分隔符。不是语句的一部分,而是表达式的分隔符。 在在for语句

14、中的表达式中可以使用逗号表达式,语句中的表达式中可以使用逗号表达式, 故不用逗号分隔表达式。故不用逗号分隔表达式。 C语言程序设计课件第6章 例:例:sum=0; for(i=1;i=100;i+) sum+=i; 或:或:i=1; for(sum=0;i=100;i+) sum+=i; 或:或:for(i=1,sum=0;i=100;i+) sum+=i; 或:或:i=1; sum=0; for( ; i=100;i+) sum+=i; C语言程序设计课件第6章 2. 关于表达式关于表达式3:可以用来改变循环变量的值,:可以用来改变循环变量的值, 也可以是与循环变量的无关的其它表达式,也可以

15、是与循环变量的无关的其它表达式, 甚至可将循环体中的语句放在表达式甚至可将循环体中的语句放在表达式3的位的位 置上。表达式置上。表达式3也可以省略,程序设计者必也可以省略,程序设计者必 须保证循环能正常结束。须保证循环能正常结束。 例:例:i=0; for(sum=0;i100; sum+=i) i+; 或:或:sum=0; for(i=1;i=100; sum+=i,i+); 或:或: sum=0; for(i=1; i=100;) sum+=i; i+; C语言程序设计课件第6章 3. 表达式表达式1与表达式与表达式3可以同时省略,只有表达可以同时省略,只有表达 式式2,即只给出循环条件。

16、,即只给出循环条件。 例、例、s=1; i=1; for( ; i=10; ) s=s*i; i+; s=1; i=1; while(i=10) s*=i; i+; 在这种情况下,在这种情况下,for与与while语句完全相同。语句完全相同。 可见,可见,for语句比语句比while语句功能强大。语句功能强大。 C语言程序设计课件第6章 4. 关于表达式关于表达式2:作为循环的判断条件,一:作为循环的判断条件,一 般为关系表达式或逻辑表达式,但亦可以般为关系表达式或逻辑表达式,但亦可以 是数值表达式或字符表达式。是数值表达式或字符表达式。 例、例、sum=0; for(i=1; i100) b

17、reak; C语言程序设计课件第6章 例例6.8求求s=1!+2!+3!+n! , 其中其中n小于小于30。 main() long s, t; int i, n; printf(input n:); scanf(%d, s=0; t=1; for(i=1; i=n; i+) t=t*i; s+=t; printf(1!+2!+3!+%d!=%ldn, n, s); getch(); C语言程序设计课件第6章 例例6.9求求Fibonacci数列的前数列的前40项。每行输出项。每行输出4项。项。 main() long t1, t2, t3; int i; t1=t2=1; printf(%1

18、0ld%10ld, t1,t2); for(i=3; i=40; i+) t3=t1+t2; printf(%10ld, t3); if(i%4=0) printf(n); t1=t2; t2=t3; getch(); C语言程序设计课件第6章 例例6.10求求Fibonacci数列的前数列的前40项。每行输出项。每行输出4项。项。 main() long t1, t2; int i; t1=t2=1; for(i=1; i=20; i+) printf(%10ld%10ld, t1,t2); if(i%2=0) printf(n); t1=t1+t2; t2=t1+t2; getch();

19、C语言程序设计课件第6章 6.6 循环的嵌套循环的嵌套 循环嵌套:一个循环(称为循环嵌套:一个循环(称为“外循环外循环”)的循)的循 环体内包含另一个循环(称为环体内包含另一个循环(称为“内循环内循环”)。)。 内循环中还可以包含循环,形成多层循环。内循环中还可以包含循环,形成多层循环。 (循环嵌套的层数理论上无限制)。(循环嵌套的层数理论上无限制)。 三种循环(三种循环(whilewhile循环、循环、do-whiledo-while循环、循环、forfor循循 环)可以互相嵌套。环)可以互相嵌套。 例例: (1) (2) while( ) do . . while(); 嵌嵌 套套 whi

20、le( ) do while( ) C语言程序设计课件第6章 (3) (4) for ( ; ; ) while() (5) (6) for(;) do while(); 嵌嵌 套套 嵌嵌 套套 嵌嵌 套套 嵌嵌 套套 for ( ; ; ) do while( ) for ( ; ; ) while( ) C语言程序设计课件第6章 例例6.11打印九九乘法表。打印九九乘法表。 main() int i, j; for(i=1; i=9; i+) for(j=1; j=i; j+) printf( %d*%d= %-2d, i, j, i*j ); printf(n); getch(); C语

21、言程序设计课件第6章 例例6.12将将1元钱兑换成元钱兑换成1分、分、2分、分、5分的硬币,若分的硬币,若 每种面值的硬币都不得少于一个,问有几每种面值的硬币都不得少于一个,问有几 种不同的兑换方法?种不同的兑换方法? main() int i, j, n=0; for(i=1; i20; i+) for(j=1; j0) n+; printf(n=%dn, n); getch(); C语言程序设计课件第6章 6.8 break语句和语句和continue语句语句 一、一、breakbreak语句语句 作用作用:跳出所在的多分支switch语句,跳出所在的 while do-while for

22、循环语句(提前结束循环)。 例、例、 #define PI 3.14 main() int r; float area; for (r=1;r 100) break; printf(%d,%6.2fn,r,area); printf(%d,%6.2fn,r,area); 当当r=6时,时,area100,执行,执行break语句,语句, 提前结束循环,不再计算提前结束循环,不再计算 r =710的的area。 运行结果:运行结果: 1 3.14 2 12.57 3 28.27 4 50.27 5 78.54 6 113.10 7 153.94 8 201.06 9 254.47 10 314.16 C语言程序设计课件第6章 二、二、continuecontinue语句语句 作用:提前结束本次循环体的执行,接着进行下 一次循环条件的判别。 例例6.13 把把100200之间不能被之间不能被3整除的数输出。整除的数输出。 main () int n; for (n=100; n= 1E-6) pi = pi + t; n = n + 2; s = -s; t = s/n; pi = pi * 4; printf(pi=%10.6fn,pi); 运行结果:运行结果:pi=3.141594 C语言程序设计课件第6章 练习:练习: 1. 猴子

温馨提示

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

评论

0/150

提交评论