C语言循环控制_第1页
C语言循环控制_第2页
C语言循环控制_第3页
C语言循环控制_第4页
C语言循环控制_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

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

文档简介

1、13456main( ) int s=0,i=1; loop: if ( i100 ) s=s+i; i=i+1; loop; printf(“s=%dn”,s);loop: 语句标号语句标号goto loop: 无条件转向语句无条件转向语句if与与goto构成了循环构成了循环7n goto 语句标号语句标号;n 将程序控制转移到将程序控制转移到“语句标号语句标号”标识的语句执行。标识的语句执行。8用用标识符标识符表示表示用来标识语句,它出现在语句的前面,用用来标识语句,它出现在语句的前面,用冒号冒号 ( :)与语句分开,使用格式为:与语句分开,使用格式为: 语句标号:语句;语句标号:语句;p

2、1:printf(“hello!”); printf(“world!”); . goto p1;2a:printf(“this is a book!”); goto 2a;n 语句标号仅对语句标号仅对goto语句有意义,通常只给语句有意义,通常只给goto语句要语句要转去的语句加标号。转去的语句加标号。9n 语句标号:语句标号:if(表达式)表达式) 语句;语句; goto 语句标号;语句标号;n 当当if中的表达式为真时,执行循环体,为假时跳出中的表达式为真时,执行循环体,为假时跳出循环,执行循环体下面的语句。循环,执行循环体下面的语句。循环体循环体10goto语句容易造成程序不清晰,不利于

3、实现语句容易造成程序不清晰,不利于实现结构化程序设计,因此,最好不用在程序中使用它。结构化程序设计,因此,最好不用在程序中使用它。11实现实现当型当型循环循环12 while(表达式)表达式) 循环体;循环体;n 先求解表达式的值。先求解表达式的值。 判断表达式的值,为真则执行循环体。判断表达式的值,为真则执行循环体。 再判断表达式的值,重复上述工作。当表达式的再判断表达式的值,重复上述工作。当表达式的 值为假时退出循环。值为假时退出循环。13循环体循环体表达式表达式flasetrue14考察下列各例,总结控制循环执行的方式。考察下列各例,总结控制循环执行的方式。15例例6-1、main()

4、int i=1,sum=0; while(i=100) sum+=i; i+; i不仅参与运算,还要控制循环。不仅参与运算,还要控制循环。注意:循环体用注意:循环体用括起来括起来;n 初始值:初始值:i=1,sum=0;n 循环条件:循环条件:i=100n 循环控制:循环控制:i+; 16#include main( ) char c; c=getchar( ); while(c!=n) switch(c-2) case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default:putc

5、har(c+2);break; c=getchar( ); 例例2while(c=getchar( )!=n)表达更为简洁。表达更为简洁。只要满足一定条件,需要多少次就运行多少次。只要满足一定条件,需要多少次就运行多少次。17n 初始值:无初始值:无;n 循环条件:循环条件:(c=getchar( ) )!=nn 循环控制:输入的字符循环控制:输入的字符18while(c=getchar( )!=n)while(c=getchar( )!=n)19#include main( ) char c; while(c=getchar( )!=n) switch(c-2) case 0: case 1

6、: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default:putchar(c+2);break; 20Example 6.1-Programmain()/*计算计算y=xn */int count, n;float x, y;printf(Enter the values of x and n:);scanf(%f %d, &x, &n);y=1.0;count=1;/*Initialization*/* Loop Begins */while (count = n)/*Testing*/y=y*x;co

7、unt+;/*Incrementing*/* End of Loop*/printf(nx=%f; n=%d; x to power n=%fn,x,n,y);21void main() double sum=0,p=1; int i=1; while(i=64) sum+=p; p*=2; i+; printf(“%.7len”, sum); getch();2223242526272829do while 循环直到型直到型循环循环30 do 循环体;循环体; while(表达式)表达式)n 先执行循环体。先执行循环体。 再求解表达式的值,判断,为真则执行循环体,否再求解表达式的值,判断,为

8、真则执行循环体,否则退出循环。则退出循环。 31循环体语句循环体语句表达式表达式flasetrue32例例1_2main() int i=1,sum=0; do sum+=i; i+; while(i=100);采用的是什么循环采用的是什么循环结束控制方法?结束控制方法?计数法计数法33例:例:main() int i,flag; i=0; flag=0; do i+; if(i%3=2&i%5=3&i%7=2) flag=1; while(flag!=1); printf(“i=%dn”, i); 采用的是什么循环采用的是什么循环结束控制方法?结束控制方法?标志法标志法34调试下列程序调试下

9、列程序,并指出是实现的什么功能。并指出是实现的什么功能。main()int k,num; k=1; num=26; do k*=num%10; num/=10; while(num); printf(k=%dn,k);35n while与与do.while: while:先判定表达式,后执行循环;先判定表达式,后执行循环; dowhile:先执行循环,再判断表达式;:先执行循环,再判断表达式; 即即:dowhile语句的循环体至少会被执行一次。语句的循环体至少会被执行一次。 int i=0;while(i)int i=0;dowhile(i);执行次执行次执行次执行次n除循环体一次都不执行的情

10、况外,除循环体一次都不执行的情况外,while与与dowhile可以互相转换。可以互相转换。36步长型步长型循环循环37 for(表达式表达式1;表达式;表达式2;表达式;表达式3) 循环体;循环体;n 执行表达式执行表达式1(初始化表达式);(初始化表达式); 判断表达式判断表达式2,为真则执行循环体,否则退出循环;,为真则执行循环体,否则退出循环; 执行表达式执行表达式3(修正表达式);(修正表达式); 再判断表达式再判断表达式2, 重复上述过程,直到表达式重复上述过程,直到表达式2值为假。值为假。 38求解表达式求解表达式1表达式表达式2flasetrue循环体语句循环体语句求解表达式求

11、解表达式3for语句的下一语句语句的下一语句for语句语句39n一般说来,一般说来,for 语句的格式可以理解为如下形式:语句的格式可以理解为如下形式:for(初始化表达式初始化表达式 ; 条件表达式条件表达式 ;修正表达式);修正表达式) 循环体语句循环体语句 例如:求例如:求1100的和的和 int i, sum=0; for(i=1; i=100 ; i+) sum=sum+i;40n由由for语句流程图可以看出,可以有以下几种省略语句流程图可以看出,可以有以下几种省略形式:形式:表达式表达式1省略,但不能省略分号。但给循环变量赋初省略,但不能省略分号。但给循环变量赋初值应在值应在for

12、语句前完成。语句前完成。例如:例如: i=1; for(; i=100 ; i+) 41表达式表达式3省略,但不能省略分号。但要将表达式省略,但不能省略分号。但要将表达式3包包含到循环体中。含到循环体中。例如:例如: for( i=1; i=100 ; ) i+; 42表达式表达式1、3省略,但不能省略分号。但要将在省略,但不能省略分号。但要将在for语语句前赋初值,并将表达式句前赋初值,并将表达式3包含到循环体中。此时相当包含到循环体中。此时相当于于while循环。循环。例如:例如: i=1; for(; i100) break; 44表达式表达式1、2、3省略,但不能省略分号。但要在循环省

13、略,但不能省略分号。但要在循环体中控制循环的结束。此时,相当于体中控制循环的结束。此时,相当于while(1)语句。语句。例如:例如: i=1; for(; ;) if(i100) break; i+; 45n表达式表达式1、3可以是一个简单的表达式,也可以是逗可以是一个简单的表达式,也可以是逗号表达式。号表达式。 如:如: sum=0; for (i=1;i100;i+) 可以写为:可以写为: for(sum=0,i=1;i100;i+)46474849505152跳出循环体或switch结构注意:只跳出本层次循环53Example 6.5The program reads a list o

14、f positive values and calculates their average.54main()int m;float x, sum, average;printf(This program computes the average of a set of numbersn);printf(Enter values one after anothern);printf(Enter a NEGATIVE number at the end.nn);sum=0;for(m=1;m=1000;+m)scanf(%f,&x);if(x0)break;sum+=x;average=sum/

15、(float)(m-1);printf(n);printf(Number of values = %dn, m-1);printf(Sum = %fn, sum);printf(Average = %fn, average);5556 continue; 结束结束本次本次循环,接着进行下一次循环。循环,接着进行下一次循环。57Example 6.7The program evaluates the square root of a series of number and prints the results. The process stops when the number 9999 is

16、 typed in.58#include main()int count, negative;double number, sqroot;printf(Enter 9999 to STOPn);count=0;negative=0;while(count=100)printf(Enter a number:);scanf(%lf,&number);if(number=9999)break;/*EXIT FROM THE LOOP*/if(number0)printf(Number is negativenn);negative+;continue;/*SKIP REST OF THE LOOP

17、*/sqroot=sqrt(number);printf(Number = %lfnSquare root=%lfnn,number,sqroot);count+;printf(Number of items done=%dn,count);printf(nnNegative items=%dn,negative);printf(END OF DATAn);59结果:结果:1491614916* *60输出输出100100200200间所有不能被间所有不能被3 3整除的数整除的数61A) 7 B) 8 C) 9 D) 10答案:答案:B62A) k=3 B)k=4 C)k=2 D)k=0答案:

18、答案:B63A) x=4 B)x=8 C) x=6 D)x=12答案:答案:B64 #include #include main ( ) int m, k, i; scanf(“%d”,&m); k = (int) sqrt(m); for (i=2; i=k+1) printf(%d is a prime number!n,m); else printf(%d is not a prime number!n,m); 例:判断例:判断m是否为素数是否为素数读入读入mk=sqrt(m)I=2当当I=k+1真真 假假输出是素数输出是素数 输出不是素数输出不是素数65 continue环境环境可用在

19、循环语句与可用在循环语句与switch语句语句只能用在循环语句只能用在循环语句功能功能跳出跳出当前整个当前整个循环语句与循环语句与switch语句语句跳出跳出本次本次循环,继续下一次循循环,继续下一次循环环均不能控制均不能控制ifgoto构成的循环构成的循环在多重循环中,在多重循环中,break用于跳出本层循环。用于跳出本层循环。6667外层循环外层循环内层循环内层循环结果:结果:x=12,y=868Program 6_2A program to print the multiplication table from 11 to 1210 as shown below is given: 1

20、2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 11 22 33 44 55 66 77 88

21、99 110 12 24 36 48 60 72 84 96 108 12069#define COLMAX 10#define ROWMAX 12main()int row, column, y;row=1;printf( MULTIPLICATION TABLEn);printf(-n);do/*.OUTER LOOP BEGINGS.*/column=1;do/*.INNER LOOP BEGINS.*/y=row*column;printf(%4d,y);column=column+1;while(column = COLMAX); /*INNER LOOP ENDS*/printf(n);row=row+1;while(row = ROWMAX); /*.OUTER LOOPS ENDS.*/printf(-n);706_2B#define COLMAX 10#define

温馨提示

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

评论

0/150

提交评论