《c语言程序设计基础与实训教程》第5章:循环控制

上传人:子 文档编号:57213903 上传时间:2018-10-20 格式:PPT 页数:54 大小:644.50KB
返回 下载 相关 举报
《c语言程序设计基础与实训教程》第5章:循环控制_第1页
第1页 / 共54页
《c语言程序设计基础与实训教程》第5章:循环控制_第2页
第2页 / 共54页
《c语言程序设计基础与实训教程》第5章:循环控制_第3页
第3页 / 共54页
《c语言程序设计基础与实训教程》第5章:循环控制_第4页
第4页 / 共54页
《c语言程序设计基础与实训教程》第5章:循环控制_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《《c语言程序设计基础与实训教程》第5章:循环控制》由会员分享,可在线阅读,更多相关《《c语言程序设计基础与实训教程》第5章:循环控制(54页珍藏版)》请在金锄头文库上搜索。

1、第五章 循环控制,(时间:5次课,10学时),第五章 循环控制,学习目的与要求: 循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。语言提供了多种循环语句,可以组成各种不同形式的循环结构。 本章主要介绍循环语句:while语句、do-while语句、for语句,及循环控制语句;continue语句、break语句等。要求掌握以上各种循环语句的使用方法;掌握循环控制语句的使用方法。,第五章 循环控制,5.1 while语句 5.2 do-while语句 5.3 for语句 5.4 循环的嵌套 5

2、.5循环结构的特殊控制break和continue的使用 5.6 goto语句以及用goto语句构成循环 5.7 上机实训 5.8 本章习题,5.1 while语句,while语句的一般形式为:while(表达式)语句 其中表达式是循环条件,语句为循环体。 while语句的执行过程是:先计算表达式的值,当值为真(非0)时, 执行循环体语句;当值为假(0)时, 退出循环。,while语句的流程图表示为:,说明:表达式可以是C语言中的任意的合法表达式,一般是关系表达或逻辑表达式,只要表达式结果为非0,则继续执行循环体语句。 循环语句只能为一条语句,如果要执行多条语句,须用括起来构成复合语句。 wh

3、ile循环的特点是先判断循环条件,后执行循环语句。,【例5.1】用while语句求 。用N-S结构流程图表示算法,如下图:,main() int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(“%dn“,sum);,【例5.2】统计从键盘输入一行字符的个数。 #include main() int n=0;printf(“input a string:n“);while(getchar()!=n)n+;printf(“%d“,n); ,说明:本例程序中的循环条件为getchar()!=n,其意义是, 只要从键盘输入的字符不是回车就继续循环。循环体n+完

4、成对输入字符个数计数。从而程序实现了对输入一行字符的字符个数计数。,【例5.3】分析如下程序的运行结果 main() int n;printf(“n input n: “);scanf(“%d“, ,执行结果为: * * *,5.2 do-while语句,do-while语句的一般形式为:do语句while(表达式); do-while语句的执行过程是:先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。,do-while语句的流程图表示为:,说明: 循环语句只能为一条语句,如果要执行多条语句,须用括起

5、来构成复合语句。 表达式可以是C语言中的任意的合法表达式,一般是关系表达或逻辑表达式,只要表达式结果为非0,则继续执行循环体语句。 注意while后的“;”,不能省略。 do-while循环的特点是先执行循环语句,后判断循环条件。,【例5.4】用do-while语句求,用N-S结构流程图表示算法,如下图:,main() int i,sum=0;i=1;dosum=sum+i;i+;while(i=100);printf(“%dn“,sum); ,【例5.5】while和do-while循环比较。,(1)main() int sum=0,i;scanf(“%d“, ,(2)main() int

6、sum=0,i;scanf(“%d“, ,以上两个程序都是计算从i到10的累加和的,当输入的i值小于等于10时,他们的结果是相同的;但当输入的i值大于10时,他们将会得到不同的结果。应当注意:while语句是先判断循环条件,后执行循环语句;do-while语句是先执行循环语句,后判断循环条件。,5.3 for语句,在C语言中的循环语句中,for语句使用最为灵活,它完全可以取代 while 语句和do-while语句。它的一般形式为:for(表达式1;表达式2;表达式3) 语句,for语句执行过程如下:(1)求解表达式1。 (2)求解表达式2,若其值为真(非0),则执行语句,然后执行下面第(3)

7、步;若其值为假(0),则结束循环,执行for语句下面的一个语句。 (3)求解表达式3。 (4)转回上面第(2)步继续执行。,for语句的流程图表示为:,说明: (1)for语句一般的应用形式,也是容易理解的形式如下: for(循环变量赋初值;循环条件;循环变量增量)语句表达式1一般是是一个赋值表达式, 它用来给循环控制变量赋初值; 表达式2一般是一个关系表达式或逻辑表达式,它决定什么时候退出循环;表达式3一般是个算术表达式,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用“;”分开。,如: for(i=1; i100时,结束循环。 其执行过程相当于: i=1; while(i=10

8、0)sum=sum+i;i+;,对于for循环中语句的一般形式,相当于如下的while循环形式:表达式1;while(表达式2)语句表达式3;,(2)for语句中的表达式1、表达式2和表达式3都是可选择项, 即可以省略,但“;”一个都不能省略。,(3)可以省略表达式1。如: i=0;for(;i=100;i+)sum=sum+i;,(4)省略表达式2,此时认为循环条件恒为真。 如:for(i=1;i+)sum=sum+i; 其执行过程相当于:i=1;while(1)sum=sum+i;i+;,(5)省略表达式3。如:for(i=1;i=100;)sum=sum+i;i+;,(6)表达式1和表达

9、式3也可以同时省略。 如: for(;i=100;) sum=sum+i;i+; ,相当于: while(i=100) sum=sum+i;i+; ,(7)3个表达式可以同时省略。 如:for(;)语句 相当于:while(1)语句,(8)表达式1,表达式2,表达式3可以是说明(1)中介绍的表达式外,还可以是其他类型的表达式。 如:for(i=1,sum=0;i=100;i+)sum=sum+i; 上面for语句的表达式1现在为逗号表达式。for(i=1;i100;sum=sum+1,i+); 上面for语句的表达式3为逗号表达式,循环语句为空语句。 又如: for(i=101;i-;)sum

10、=sum+i; 表达式2现在为算术表达式,只要其值不为零,循环就继续执行。,【例5.6】输出1到100得所有偶数。 main() int i;int n=0;for(i=2;i=100;i+=2)printf(“%4d“,i);n+;if(n%10=0)printf(“n“); ,说明:i变量即为所要输出的数据,从2开始,每次递增2;n变量为输出数据个数的计数器,每输出10个数后换一行。,5.4 循环的嵌套,在使用上述三种循环语句时,循环体语句可以是c当中的任何一种语句,当循环体语句又包含或着是循环语句时,就够成了循环的嵌套。循环嵌套的应用很多,三种循环可以相互嵌套。,例5.7】打印如图的九九

11、乘法表。,main() int i,j;for( i=1;i=9;i+)/*共输出九行*/for( j=1;j=i;j+)/*每行输出i列*/printf(“%d*%d=%-3d“, j, i, j*i );printf(“n“);/*每行的列数输出完后换行*/ ,【例5.8】设有36个人搬36块砖,男人搬四块,女人搬三块,小孩两个人搬一块,问男人、女人、小孩各多少人?,main() int m,w;for(m=0;m9;m+)for(w=0;w12;w+)if(m*4+w*3+(36-m-w)/2.0=36)printf(“m:%d w:%d c%dn“,m,w,36-m-w); ,5.5

12、循环结构的特殊控制 break和continue的使用,1break语句break语句的一般形式为:break;break语句可用于循环语句和switch语句中。break在switch语句中的用法已在前面介绍,这里不再说明。在循环语句中,如果执行到break语句,则终止break所在循环的执行,break语句之后的循环语句也不再执行。 通常break语句总是与if语句联用,即满足条件时便跳出循环。,【例5.9】 main() int i,s=0;for(i=1;i100;i+)break;s=s+i;/*执行break语句后循环直接跳出,该语句永远不会被 执行到*/printf(“%d“,s

13、); 因为s=s+i没有执行过,所以运行结果为:0,【例5.10】main()int i,s=0;for(i=1;i5) break;s=s+i;printf(“%d”,s);前5次执行循环体时,if条件不成立,s依次累加1,2,3,4,5,当循环体执行到第6次时,if条件成立,break语句执行,所以运行结果为:15,【例5.11】main()int i,j,k=0;for(i=0;i2) break;/*当break执行后,跳出 内层循环,即下一步操 作为i+ */printf(“%d“,k); 执行结果为:5,【例5.12】main()int i,j,k=0;for(i=0;i2) br

14、eak;/*当break执行后,跳出外层循 环,即下一步操作为printf(“%d”,k);*/printf(“%d“,k); 执行结果为:3,【例5.13】判断一个数n是否为素数分析:素数的判定方法是:让n被2到的整数除,如果n不能被2到的整数整除,则n是素数。 #include main() int n,i,k; scanf(“%d“, ,continue 语句,continue语句的一般形式为:continue;如果在循环体语句的执行过程中遇到并执行了continue语句,那么系统将跳过循环体中剩余的语句而强制执行下一次循环。与break语句的用法相似,continue语句常与if条件语

15、句一起使用。,【例5.14】求main()int i,sum=0;for(i=1;i20,【例5.15】把100-200之间不能被3整除的数输出main( )int k=0,n=99;while(n=200) n+;if(n%3=0) continue;printf(“%5d“,n);k+;if(k%5=0) printf(“n“);,5.6 goto语句以及用goto语句构成循环,goto语句是一种无条件转移语句,一般形式为:goto 语句标号;其中标号是一个有效的标识符,这个标识符加上一个“:”,出现某条语句前。 执行goto语句后,程序将跳转到该标号处并执行其后的语句。标号应当与goto语句同处于一个函数中。通常goto语句与if条件语句配合使用, 当满足某一条件时, 程序跳到标号处运行。goto语句与if语句配合使用可以构成循环结构。,【例5.16】用goto语句和if语句构成循环,求 。 main() int i, sum;i=1;sum=0;loop: if(i=100)sum=sum+i;i+;goto loop; printf(“%d“,sum); 说明:这段程序的执行,与例5.1中whie循环语句的执行是相同的。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号