




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 循环语句7/23/20221 1、C语言可实现循环的语句: 用goto 和 if 构成循环 while 语句 do while 语句 for 语句 5.1 概 述7/23/20222说明:不能用整数作标号只能出现在goto所在函数内,且唯一只能加在可执行语句前面限制使用goto语句 goto 语句标号; .标号:语句; goto语句一般格式:2、goto语句 含义 : 无条件转移7/23/20223一般形式:while(表达式) 循环体语句;流程图:表达式循环体语句假(0)真(非0)5.2 while语句7/23/20224特点:先判断表达式,后执行循环体几点说明:循环体有可能一次也不
2、执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环: while(1) 循环体语句;7/23/20225#include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);循环初值循环终值循环变量增值循环条件循环体语句 100例: 用while循环求 n n=17/23/20226例: 显示110的平方#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i
3、+; 运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=1007/23/20227一般形式:do 循环体语句;while(表达式);执行流程:循环体语句表达式假(0)真(非0)5.3 Do-while语句7/23/20228特点:先执行循环体,后判断表达式说明:至少执行一次循环体dowhile可转化成while结构表达式循环体假(0)真(非0)赋初值While循环循环体语句表达式假(0)真(非0)Do-While循环7/23/20229#include main() int i,sum=0; i=1; do sum+=i
4、;i+; while(i=100); printf(%d,sum); 100例: 用dowhile循环求 n n=17/23/202210例 while和dowhile比较#include main() int i,sum=0; scanf(%d,&i); do sum+=i;i+; while(i=10); printf(%d,sum);# include main() int i,sum=0; scanf(%d,&i); while(i=10) sum+=i;i+; printf(%d,sum);7/23/202211一般形式:for(表达式1 ; 表达式2 ; 表达式3) 循环体语句;执
5、行流程:表达式2循环体语句假(0)真(非0)表达式1表达式35.4 for循环7/23/202212for语句最简单应用形式:for(循环变量赋初值;循环条件;循环变量增值)循环体语句;说明:for语句中表达式1, 表达式2 ,表达式3 类型任意,都可省略,但分号;不可省无限循环: for(;)for语句可以转换成while结构表达式1;while(表达式2)循环体语句;表达式3;例 用for循环求n #include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum);7/23/202213循环的嵌套三种循环可互相嵌套,层
6、数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程(1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() .嵌套循环的跳转禁止:1.从外层跳入内层2.跳入同层的另一循环3.向上跳转5.5 循环嵌套7/23/202214例: 我国古代数学家张丘建在算经中出了一道题“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”假设鸡翁数为x,鸡母数为y,鸡雏数为z。列方程为: x+y
7、+z=100 5x+3y+z/3=100三个未知数,两个方程 问题解决之道:穷举法 穷举解决之道:循环解题思路:利用以前学过的数学知识列方程。7/23/202215算法如下:假设x、y已知,由方程可以得出z=100-x-y由条件可知x和y的值有限制,只可能在0100之间。需要用二重循环实现。每个x和y的组合都对应一个z的值,如果x,y和z的值满足方程,即为所求结果 x+y+z=100 5x+3y+z/3=1007/23/202216程序实现1、定义3个变量。用双for循环实现: int x,y,z; for(x=0;x=100;x+) for(y=0;y=100;y+) z=100-x-y;2
8、、利用if语句判断x,y,z是否满足条件: if(15*x+9*y+z=300)#include main() int x,y,z; for(x=0;x=100;x+) for(y=0;y=100;y+) z=100-x-y; if(15*x+9*y+z=300) printf(“%,d%d,%dn”,x,y,z); 为什么不是5*x+3*y+z/3=100呢7/23/202217#include main() int x,y,z; for(x=0;x=100;x+) for(y=0;y=0) printf(“%,d%d,%dn”,x,y,z); 7/23/202218#include mai
9、n() int x,y,z; for(x=0;x=100;x+) for(y=0;y=100;y+) for(z=0;z=100;z+) if(15*x+9*y+z=300&x+y+z=100) printf(“%,d%d,%dn”,x,y,z); 7/23/2022195.6 几种循环的比较#include main() int i,sum=0; i=1; do sum+=i;i+; while(i=100); printf(%d,sum);#include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum)
10、;#include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum); 100求 n n=17/23/202220循环比较总结1、几种循环通常情况下可以互相替代2、while和do-while循环,只在while后面指定循环条件,在循环体内应包含使循环趋于结束的语句;for循环比较灵活,循环趋于结束语句可以用在表达式3,也可以在循环体语句中完成。3、 while和do-while循环的循环变量初值应在while和do-while循环之前完成。4、三种循环都可以用break跳出循环,用continue 结束本次循环。7/23
11、/2022211、break语句功能:在循环语句和switch语句中,终止并 跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中5.7 break语句和continue语句7/23/202222表达式break;假(0)真(非0)whiledobreak;.表达式假(0)真(非0)while表达式2break;.假(0)真(非0)for表达式1表达式37/23/202223break举例:输出圆面积,面积大于100时停止#define PI 3.14159main() int r; float area; for(r
12、=1;r100) break; printf(r=%d,area=%.2fn,r,area); 7/23/2022242、continue语句功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中表达式continue;假(0)真(非0)while真(非0)docontinue;.表达式假(0)while表达式2continue;.假(0)真(非0)for表达式1表达式37/23/202225例:把100200之间的不能被3整除的数输出main() int n; for(n=100;n=200;n+) if(n%3=0) continue; printf(“%d”,n); 7/23/202226例 判断m是否素数读入mk=mi=2当ikm被i整除真假用break结束循环i=i+1ik+1真假输出:m”是素数”输出:m”不是素数”7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 同人寄售定制合同范例
- 便道砖铺设施工合同范例
- 向个人采购合同范本
- ppp供暖项目合同范本
- 俩兄弟建房子合同范本
- 产品加工转让合同范本
- 出售种植大棚合同范本
- 360公司入股合同范本
- 信号灯维修合同范本
- 与政府签合同范本
- 《人类起源的演化过程》阅读测试题及答案
- 四川省建筑工程地下结构抗浮锚杆关键技术作业规程
- 中医养生保健素养知识讲座
- 汽车修理有限公司章程
- (多场景条款)过桥垫资借款合同
- JBT 7901-2023 金属材料实验室均匀腐蚀全浸试验方法 (正式版)
- 小学科学人教鄂教版四年级下册全册教案2023春
- 非遗文化介绍课件:扎染
- 营销培训:揭秘销售成功密码
- 基于STM32Cube的嵌入式系统应用 教案
- 动画分镜头脚本设计课件
评论
0/150
提交评论