版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 循环结构的程序设计,循环结构:,当型循环结构,直到型循环结构,注:A可以是一个简单语句,也可以是一个基本结构,6.1 概述,C语言可实现循环结构的语句: 用goto 和 if 构成循环 while 语句 do while 语句 for 语句,goto语句一般格式:,goto 语句标号; 标号:语句;,功能:无条件转移语句 说明: 不能用整数作标号 只能出现在goto所在函数内,且唯一 只能加在可执行语句前面 限制使用goto语句,6.2 goto语句以及用goto语句构成循环,例 用if 和goto语句构成循环,求,/*c5_1.c*/ #include main() int i,su
2、m=0; i=1; loop: if(i=100) sum+=i; i+; goto loop; printf(%d,sum); ,分析: sum=sum+1=1 sum=sum+2=1+2=3 sum=sum+3=3+3=6 sum=sum+4=6+4=10 sum=sum+100=4950+100=5050,例 从键盘输入一组数据,以0结束输入,求数据和,/*c5_2.c*/ #include main() int number,sum=0; read_loop: scanf(%d, ,一般形式:,while(表达式) 循环体语句,执行流程:,6.3 while语句,此处无;,特点:先判断
3、表达式,后执行循环体(当型) 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环: 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;,例 用while循环求,/*c5_3.c*/ #include main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); ,例 显示110的平方,/*c5_4.c*/ #include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*
4、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,一般形式:,do 循环体语句 while(表达式);,执行流程:,6.4 do-while语句,此处有;,特点:先执行循环体,后判断表达式(直到型) 说明: 至少执行一次循环体 do-while可转化成while结构,例 用dowhile循环求,/*c5_5.c*/ #include main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); ,例
5、 while和dowhile比较,/*c5_6_1.c*/ #include main() int i,sum=0; scanf(%d, ,/*c5_6_2.c*/ #include main() int i,sum=0; scanf(%d, ,结论:当 while后的表达式第一次的值为“真”时,两种结果相同,否则不同。,一般形式:,for(表达式1;表达式2;表达式3) 循环体语句,执行流程:,6.5 for语句,1.先求解表达式1; 2.求解表达式2,若其值为真(非0),则执行循环体的内容,然后执行第3步。若为假(0),则结束循环,执行for语句下面一条语句。 3.若表达式为真,执行指定的
6、语句后,求解表达式3。 4.返回第2步执行。,此处无;,for语句一般应用形式:,for( 循环变量赋初值; 循环条件; 循环变量增值) 循环体语句 ,说明: for语句中表达式1、表达式2、表达式3类型任意,都可省略,但分号;不可省 无限循环: for(;) for语句可以转换成while结构,表达式1; while(表达式2) 循环体语句; 表达式3; ,此处无;,例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); ,运行结果:abcdefghij,例:#include main( ) int i=0; for(;i10;i+
7、) putchar(a+i); ,例: #include main( ) int i=0; for(;i10;) putchar(a+(i+); ,例: #include main( ) int i=0; for(;i10;putchar(a+i),i+) ; ,省略表达式 1,省略表达式1、3,省略循环体,/*c5_7.c*/ main() int i,j,k; for(i=0,j=100;i=j;i+,j-) k=i+j; printf(%d+%d=%dn,i,j,k); ,/*c5_8.c*/ #include main() char c; for(;(c=getchar()!=n;)
8、printf(%c ,c); ,/*c5_9.c*/ #include main() int i,c; for(i=0;(c=getchar()!=n;i+=3) printf(%c ,i+c); ,表达式 1、3为逗号表达式,结论:for语句的功能强大。,三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的执行流程,(1) while() while() . ,(2) do do while( ); . while( );,(3) while() do while( ); . ,(4) for( ; ;) do while(); while() . ,嵌套循
9、环的跳转 禁止: 从外层跳入内层 跳入同层的另一循环 向上跳转,6.6 循环的嵌套,例 循环嵌套,输出九九表,/*c5_10.c*/ #include main() int i,j; for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j=i;j+) printf(j=i)?%4dn:%4d,i*j); ,for(i=1;i10;i+) for(j=1;j=i;j+) printf(j=i)?%4dn:%4d,i*j);,6.7 几种循环的比较,三种循环均可处理同一问题; for和while语句为先判断后执行,
10、do-while语句则先执行后判断; do-while和while 语句多用于循环次数不定的情况,循环次数确定的用for语句更方便; do-while语句更适合第一次肯定执行的情况; do-while和while语句只有一个表达式,用于控制循环是否进行。for语句有三个表达式,不仅可以控制循环是否进行,而且能为循环变量赋初值及不断修改其值。故for语句功能更强,更灵活。,6.8.1 break语句 一般形式:break; 功能:在循环语句和switch语句中,终止并跳出循环体或开关体 说明: break只能终止并跳出最近一层的结构 break不能用于循环语句和switch语句之外的任何其它语句
11、之中,6.8 break语句和continue语句,例 break举例:输出圆面积,面积大于100时停止,#include #define PI 3.14159 main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); ,例 break举例: 小写字母转换成大写字母,直至输入非小写字母字符。,/*ch6-5-2.c*/ #include main() char c; while(1) c=getchar(); if(c=a ,6.8.2 continue语句 一般形式:continue; 功能:
12、结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断 说明: 仅用于循环语句中 continue 语句仅结束本次循环,但break语句则是结束整个循环过程。,例 求输入的十个整数中正整数的个数及其和与平均值,#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,6.9 程序举例,/*c5_11.c*/ #include #include main() int s; float n,t,pi; t=1; pi=0; n=1.0; s=
13、1; while(fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); ,例6.6 用 公式求的近似值,直到最后一项的绝对值小于10-6为止,例6.7 求Fibonacci数列:1,1,2,3,5,8,的前40个数。 F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n3),/*c5_12.c*/ #include main() long int f1,f2; int i; f1=1; f2=1; for(i=1;i=20;i+) printf(%12ld %12ld ,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防营养不良工作制度
- 领导干部下乡工作制度
- 食品卫生管理工作制度
- 麻醉同复苏室工作制度
- 凉山彝族自治州布拖县2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- 福州市鼓楼区2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- GJB9001C-2017内部审核标准模板
- 铁岭市清河区2025-2026学年第二学期四年级语文第七单元测试卷(部编版含答案)
- 延边朝鲜族自治州图们市2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 冷食品制作工安全操作竞赛考核试卷含答案
- 建立质量管理体系
- 工程合同免责补充协议
- 煤矿一通三防安全知识培训
- DBJ50-T-314-2019玻化微珠无机保温板建筑保温系统应用技术标准
- 口腔医学主治医师中级职称(代码353)医学卫生资格考试题库
- 【MOOC】创业基础-暨南大学 中国大学慕课MOOC答案
- 2024年自考现代管理学复习纲要
- 物流货物运输合同范式文本
- 企业食堂安全培训课件
- QBT 102T-2023 甜菜糖厂设计规范 (正式版)
- 中建项目基础土方开挖施工专项方案
评论
0/150
提交评论