2006第5章循环控制

上传人:ji****n 文档编号:54406200 上传时间:2018-09-12 格式:PPT 页数:59 大小:635KB
返回 下载 相关 举报
2006第5章循环控制_第1页
第1页 / 共59页
2006第5章循环控制_第2页
第2页 / 共59页
2006第5章循环控制_第3页
第3页 / 共59页
2006第5章循环控制_第4页
第4页 / 共59页
2006第5章循环控制_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《2006第5章循环控制》由会员分享,可在线阅读,更多相关《2006第5章循环控制(59页珍藏版)》请在金锄头文库上搜索。

1、计 算 机 引 论(C 语 言),第五章 循环控制,2006年9月,本章主要内容,循环结构概述 goto语句以及用goto语句构成循环 while语句 for语句 do-while语句 循环的嵌套 break语句和continue语句 本章要求掌握循环控制语句的用法。,本章重点!,循环结构概述 用goto 和 if 构成循环 循环语句 while 语句 do while 语句 for 语句,标号举例 error: goto举例 goto error; 一般形式goto 语句标号; 语句标号: 或语句标号:goto 语句标号;,goto与标号(label),功能:无条件转移语句 语句标号说明:

2、是一个标识符,不能用整数作标号 只能出现在goto所在函数内,且唯一 只能加在可执行语句前面 限制使用goto语句,例: 用if 和goto语句构成循环,求1+2+100,/*ch5_1.c*/ #include main( ) int i,sum=0;i=1; loop: if(i=100) sum+=i;i+;goto loop;printf(“%d“,sum); ,sum=0+1 sum=1+2=3 sum=3+3=6 sum=6+4 sum=4950+100=5050,条 件P,A,当型循环,直到型循环,真,假,假,条 件P,A,假,真,循环结构,循环while,for,while (

3、表达式) 语句; for (表达式1; 表达式2; 表达式3) 语句;,while,while (表达式) 语句; 只要表达式的值为非0,就重复执行语句,直到表达式值为0时止,while语句,执行流程:,特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句,如果包括一个以上的语句,则必须用括起来 下列情况,退出while循环 条件表达式不成立(为0) 循环体内遇break,goto 只要while语句中表达式的值为真(非0) 即可继续循环 应注意循环条件的选择以避免死循环,例: 用while循环求1+2+100,/*ch5_2.c*/ #include m

4、ain( ) int i,sum=0;i=1;while(i=100) sum=sum+i;i+;printf(“%d“,sum); ,例: 显示110的平方,#include main( ) int i=1;while(i=10) printf(“%d*%d=%dn“,i,i,i*i);i+; ,运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100,for,for (表达式1; 表达式2; 表达式3) 语句; 首先执行表达式1。如果表达式2的值为非0,就重复执行语句和表达式3,直到表达式2的值为

5、0时止 相当于: 表达式1; while (表达式2) 语句; 表达式3; 表达式1和表达式3可以没有或者是用逗号分隔的多个表达式的组合。但最好不要有太多的表达式组合,for语句,执行流程:,说明: for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省 无限循环: for(;),例:#includemain( ) int i=0;for(i=0;i10;i+)putchar(a+i);,运行结果:abcdefghij,例:#includemain( ) int i=0;for(;i10;i+)putchar(a+i);,例:#includemain( ) in

6、t i=0;for(;i10;)putchar(a+(i+);,例:#includemain( ) int i=0;for(;i10;putchar(a+i),i+);,main( ) int i,j,k;for(i=0,j=100;i=j;i+,j-) k=i+j;printf(“%d+%d=%dn“,i,j,k); ,#include main( ) char c;for(;(c=getchar( )!=n;)printf(“%c “,c); ,#include main( ) int i,c;for(i=0;(c=getchar( )!=n;i+=3)printf(“%c “,i+c);

7、 ,注意,在for和while语句行之后一般没有分号 有分号表示循环体就是分号之前的内容(如:空循环体) while (i 100); i+; for (i = 0; i 100; i+); printf(“%d“, i);,do-while,do 语句; while (表达式); 首先执行语句,然后判断表达式的值。如果表达式为0,继续向下执行,否则,再次执行语句,再次判断表达式的值 语句会被至少执行一次,dowhile语句,执行流程:,特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 dowhile可转化成while结构(修改控制条件) 在if和while语句中,表达式后面不能加

8、分号 在do while语句的表达式后面则必须加分号,例: 用dowhile循环求1+2+100,/*ch5_3.c*/ #include main( ) int i,sum=0;i=1;do sum+=i;i+;while(i=100);printf(“%d“,sum); ,例: while和dowhile比较,/*ch5_4.c*/ #include main( ) int i,sum=0;scanf(“%d“, ,#include main( ) int i,sum=0;scanf(“%d“, ,条 件P,A,当型循环,直到循环,真,假,假,条 件P,A,假,真,假,条 件P,条 件P,

9、A,假,当循环条件第一次就为假时,选择三种循环的一般原则,如果循环次数已知,用for 如果循环次数未知,用while 如果循环体至少要执行一次,用do-while 这只是“一般”原则,不是“原则”,死循环,永远不会退出的循环为死循环 for (;) while (1) do while (1) 一般情况下,要极力避免死循环 绝大多数程序不需要死循环。如果出现,往往都是bug 时间过长的循环会造成“假死”效果,也要考虑解决,使用嵌套的循环体时,应注意以下问题,在嵌套的各层循环体中,使用复合语句(即用一对大花括号将循环体语句括起来)保证逻辑上的正确性 内层和外层循环控制变量不应同名,以免造成混乱

10、嵌套的循环最好采用右缩进格式书写,以保证层次的清晰性 循环嵌套不能交叉,即在一个循环体内必须完整的包含着另一个循环,合法的嵌套循环,循环的嵌套 三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉,(1) while() while() .,(2) do do while( );.while( );,(3) while() do while( );.,(4) for( ; ;) do while();while() . ,嵌套循环的跳转禁止: 从外层跳入内层 跳入同层的另一循环,例: 循环嵌套,输出九九表,/*ch5_5.c*/ #include main() int i

11、,j;for(i=1;i10;i+)printf(“%4d“,i);printf(“n-n“);for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?“%4dn“:“%4d“,i*j); ,for(i=1;i10;i+)for(j=1;j=a ,continue语句,循环语句的 下一条语句,循环语句的 下一条语句,下一条语句,输入一个整数,判断它是否是素数,方法1,#include main() int m, i, k;printf(“Please enter a number:“);scanf(“%d“, ,Please enter a number:,6,Pr

12、ogram is over!,No!,方法1,#include main() int m, i, k;printf(“Please enter a number:“);scanf(“%d“, ,Please enter a number:,5,Program is over!,Yes!,方法2,#include main() int m, i, k;printf(“Please enter a number:“);scanf(“%d“, ,Please enter a number:,6,Program is over!,No!,方法3,#include main() int m, i, k,

13、 flag = 1; /*标志变量flag初值置为1*/printf(“Please enter a number:“);scanf(“%d“, ,这个程序是做什么的?,#include main() int m, i, flag = 1; /*标志变量flag初值置为1*/printf(“Please enter a number:“);scanf(“%d“, ,例 求输入的十个整数中正数的个数及其平均值,/*ch5_6.c*/ #include main() int i,num=0,a;float sum=0;for(i=0;i10;i+) scanf(“%d“, ,程序举例,分子:1,-1,1,-1 分母:1, 3,5, 7.,

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

当前位置:首页 > 中学教育 > 初中教育

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