版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章第五章 循环结构程序设计循环结构程序设计 内蒙古科技大学工程训练中心 循环语句循环语句 nwhile 语句语句 ndo while 语句语句 nfor 语句语句 循环结构用于完成程序中需要重复执行的操作。是结构化 程序设计的三种基本结构之一。在在c语言中循环语句有三种:语言中循环语句有三种: while 语句语句 条件表达式条件表达式 循环体循环体 1(真)(真) 0(假假) 一般一般形式形式: while (条件表达式条件表达式) 语句语句; 其其特点特点是:是: 先判断表达式,后执行语句。先判断表达式,后执行语句。 while 循环体 循环结构的术语循环结构的术语 1. 循环条件循环
2、条件: 是循环结构中的条件表达式。是循环结构中的条件表达式。 2. 循环体循环体:是在每个循环周期均要执行一次的语句。语句可以是任是在每个循环周期均要执行一次的语句。语句可以是任 何语句,简单语句、复合语句、空语句均可以。何语句,简单语句、复合语句、空语句均可以。 (1) (1)条件表达式条件表达式一般是关系表达式和逻辑表达式。一般是关系表达式和逻辑表达式。 3. 循环变量循环变量 是在循环中控制条件表达式是真是假的变量,即控制循环体是在循环中控制条件表达式是真是假的变量,即控制循环体 能否执行的变量。能否执行的变量。 在任一种循环语句中,循环变量均有:在任一种循环语句中,循环变量均有: 三三
3、 个个 值值 三三 个个 表表 达达 式式 初初 始始 值值 初始值表达式初始值表达式 终终 止止 值值 终止值表达式终止值表达式(条件条件 表达式表达式) 递递 增(递增(递 减)值减)值递增(递减)表达式递增(递减)表达式 计算从计算从1 1到到1010所有整数的累加和,即:所有整数的累加和,即:1+2+3+4+5+1+2+3+4+5+9+10+9+10。 #include main() int sum,i; sum=0;i=1; while (i=10) sum+=i; i+; printf(“sum=%dn”,sum); 例例1 1: 练习题:练习题: 1.在屏幕的一行上依次输出在屏幕
4、的一行上依次输出7个个*号。号。 2.计算计算1100之间是之间是7的倍数的数值之和的倍数的数值之和 。 dodowhile while 语句语句 一般一般形式形式: do 循环体循环体 while(条件表达式条件表达式) ; 0(假假) do 循环体循环体 条件表达式条件表达式 1(真真) 其其特点特点是:是: 先执行循环体,后判断循环条件。先执行循环体,后判断循环条件。 #include main() int sum,i; sum=0;i=1; do sum+=i; i+; while (i=10); printf(“sum=%dn”,sum); 计算从计算从1 1到到1010所有整数的累
5、加和,即:所有整数的累加和,即:1+2+3+4+5+6+7+8+9+101+2+3+4+5+6+7+8+9+10。 例例2 2: 练习题:练习题: 1.在屏幕的一行上依次输出在屏幕的一行上依次输出7个个*号。号。 2.计算计算1100之间是之间是7的倍数的数值之和。的倍数的数值之和。 while while 语句和语句和do while do while 语句的比较语句的比较 while 语句语句先对表达式进行判断,后执行循环体;先对表达式进行判断,后执行循环体; do while 语句语句先执行循环体,后对表达式进行判断。先执行循环体,后对表达式进行判断。 当处理同一个问题时,如果第一次表达
6、式为真时,其结果相同;当处理同一个问题时,如果第一次表达式为真时,其结果相同; 第一次第一次当表达式为假时,则结果不同。当表达式为假时,则结果不同。 例如:例如: i=2; c=0; n=2; while(in) c=c+5; i+; printf(“%d”,c); i=2;c=0; n=2; do c=c+5; i+; while (i10) break; 1.while1.while while (3) while (3) 语句语句 表示无限循环表示无限循环 while (0) while (0) 语句语句 表示不进入循环体表示不进入循环体 do-whiledo-while同上。同上。 作
7、业作业 n计算计算1010!,即!,即1 1* *2 2* *3 3* *. .* *1010。 n输出输出1 12002000 0之间的所有偶数。之间的所有偶数。 #include main() int i=1 , jc=1; while(i=10) jc=jc*i; i+; printf(“%d!=%dn”,n,jc); 作业作业1: #include main() int i=1 , jc=1; do jc=jc*i; i+; while (i=10); printf(“%d!=%dn”,n,jc); #include main() int i , jc=1; for(i=1;i=10;
8、i+) jc=jc*i; printf(“%d!=%dn”,n,jc); 作业作业2:输出输出1到到2000之间的偶数。之间的偶数。 #include main() int i; for(i=1;i=2000;i+) if (i%2=0) printf(“%d”,i); 开始 i=1 i%2=0 y 输出i i=i+1 i=2000 y n 退出 n breakbreak语句和语句和continuecontinue语句语句 1、break 语句:终止语句的执行。语句:终止语句的执行。 1.使用在使用在switch语句中。语句中。 2.使用在使用在while、do-while和和for循环语句的
9、循环体中。循环语句的循环体中。 格式:格式:break; #include main() int r; float s; for(r=2;r100) break; printf(r=%d,s=%fn,r,s); 2、continue 语句语句: continue作用作用: 结束本次循环(即不执行本次循环中尚未执结束本次循环(即不执行本次循环中尚未执 行的语句),进入下一次循环。行的语句),进入下一次循环。 continue语句和语句和break语句的区别:语句的区别: continue语句只结束本次循环语句只结束本次循环,而不是终止整个循环。,而不是终止整个循环。 break语句终止整个循环语
10、句终止整个循环,不再判断循环条件。,不再判断循环条件。 例如:输出例如:输出100-200之间不能被之间不能被3整除的数据。整除的数据。 for(n=100;n=200;n+) if(n%3= =0) continue; printf(“%d”,n); breakbreak语句和语句和continuecontinue语句语句 读程序,区别两者的不同读程序,区别两者的不同 n#include nmain() n nint i; nfor(i=1;i=50;i+) n nif(i%7=0) ncontinue; nprintf(%dt,i); n nprintf(n); n 例例1 求求10099
11、9之间的水仙花数。之间的水仙花数。 (水仙花数:每位数字的立方和等于该数本身)(水仙花数:每位数字的立方和等于该数本身) #include main() int i,a,b,c; for(i=100;i=999;i+) a=i%10; b=(i/10)%10; c=i/100; if(i=a*a*a+b*b*b+c*c*c) printf( %d,i); 例例2:求:求1-1000之间的同构数。之间的同构数。 (同构数:该数平方值的后几位数等于该数本身)(同构数:该数平方值的后几位数等于该数本身) #include main() int i,m; for(i=1;i=1000;i+) m=i*
12、i; if(m%10=i | m%100=i | m%1000=i) printf(%6d,i); 同一类型题:同一类型题: 从键盘输入一个整数,求它的位数,并打印出每一位上的数字。从键盘输入一个整数,求它的位数,并打印出每一位上的数字。 作业:作业: 求求100到到999的水仙花数。(单重循环)的水仙花数。(单重循环) 求求1000以内所有的同构数。(单重循环)以内所有的同构数。(单重循环) 循环嵌套循环嵌套 一个循环的循环体中套有另一个循环叫一个循环的循环体中套有另一个循环叫循环嵌套循环嵌套。这种嵌。这种嵌 套过程可以一直重复下去。套过程可以一直重复下去。 一个循环外面包围一层循环称为一个
13、循环外面包围一层循环称为二重循环二重循环。 一个循环外面包围二层循环称为一个循环外面包围二层循环称为三重循环三重循环。 一个循环外面包围多层循环称为一个循环外面包围多层循环称为多重循环多重循环。 while、do-while、for可以互相嵌套自由组合。可以互相嵌套自由组合。 while( ) do while( ) : : : while( ) do do while( ) ; while( ); : while( ) ; for(; ;) for(; ;) do : : : for(; ;) while( ) for(; ;) while( ); 循环嵌套的格式:循环嵌套的格式: 读程序段
14、:读程序段: n#include nmain() n nint i,j; ni=1; nwhile(i=3) n n for(j=1;j=i;j+) n printf(*); n i+; n n 例例1:打印打印8行行7列的星号矩形。列的星号矩形。 #include main() int i , k; for( i=0; i8; i+ ) for( k=0; k7; k+ ) printf(*); printf(n); 例例3:求:求1000以内的完全数。以内的完全数。 (完全数:该数等于它的因子之和(除自身外。例如(完全数:该数等于它的因子之和(除自身外。例如: 6) #include ma
15、in() int i,j,t; for(i=1;i=1000;i+) t=0; for(j=1;ji;j+) if(i%j=0) t=t+j; if(t=i) printf( %d,i); #include main() int i,m; printf(please input a number:n); scanf(%d, for(i=2;i=m) printf(%d is prime.n,m); else printf(%d is not prime.n,m); 例例4 4:给定一个整数给定一个整数m,m,判断该数是否为素判断该数是否为素( (质质) )数。数。 m是素数的是素数的条件条件是
16、:是:m不能被不能被2,3,m-1整除。整除。 求出求出100200100200以内的所有素数。以内的所有素数。 n#include n#include nmain() n n int m , k,i ,n=0; n for(m=101;m=200;m=m+2) n n k=sqrt(m); n for(i=2;ik) n printf( %d,m); n n 穷举法穷举法: 穷举算法穷举算法: :把所有可能的方案一一测试把所有可能的方案一一测试, ,从中找出符合条件的方从中找出符合条件的方 案。案。 例例5:百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱:百鸡问题:鸡翁一,值钱五,鸡
17、母一,值钱三,鸡雏三,值钱 一,百钱买百鸡,问鸡翁、母、雏各多少只?一,百钱买百鸡,问鸡翁、母、雏各多少只?(穷举算法穷举算法) 分别设鸡翁、鸡母、鸡雏各为分别设鸡翁、鸡母、鸡雏各为x,y和和z只。只。 100钱全部买了鸡翁,鸡翁最多钱全部买了鸡翁,鸡翁最多20只,所以:只,所以: x0,20 y0,34 z:100-x-y #include main() int x,y,z; for(x=0;x=20;x+) for(y=0;y=34,y+) z=100-x-y; if(z%3=0) 递推算法递推算法: :在一个或几个结果的基础上推出下一个结果在一个或几个结果的基础上推出下一个结果. . 递
18、推算法:递推算法: 穷举法相同类型的题:穷举法相同类型的题: 1、编程:、编程:百马拉百砖百马拉百砖.用用100匹马拉匹马拉100块砖,红马拉块砖,红马拉3块,块, 黑马拉黑马拉2块,白马两匹拉块,白马两匹拉1块,在红马、黑马和白马不可缺少的情况下,块,在红马、黑马和白马不可缺少的情况下, 共有几种拉法?共有几种拉法? 2. 5.8(课后课后) p92 例例6:求斐波纳契(求斐波纳契(fibonaccifibonacci)数列:数列:1 1,1 1,2 2,3 3,5 5, 8 8的前的前2020项(递推算法)。项(递推算法)。( (后一项等于前两项之和后一项等于前两项之和) ) 作法1: #
19、include main( ) int i; int f1=1, f2=1; int f; printf(%10d%10d, f1, f2); for(i=3; i=20; i+) f=f1+f2; printf(%10d, f); f1=f2; f2=f; #include main() int f1=1, f2=1, i; printf(%6d%6dn,f1,f2); for(i=1;i=9;i+) f1=f1+f2; f2=f1+f2; printf(%6d%6dn,f1,f2); 作法2: 例例7:求:求值值 #include #include main() double n,sum,pa,cj; n=1; sum=0; while(1/(n*n)pow(10,-12) sum=sum+1/(n*n); n+; cj=sum*6; pa=sqrt(cj); printf(%f,pa); 相同类型的题:相同类型的题: 例例5.11 p88 例例8:统计从键盘上输入的字符中数字字符、大写字符、小写字符、:统计从键盘上输入的字符中数字字符、大写字符、小写字符、 其它符号的个数,用换行结束循环。其它符号的个数,用换行结束循环。 #include main() int sz=0,dx=0,xx=0,qt=0; char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030腊味电商渠道增长潜力与数字化转型实践分析
- 2025-2030腊味传统零售终端改造与新零售场景构建分析报告
- 2025-2030腊味产品感官评价体系标准化与质量控制关联性分析
- 2025-2030脑机接口行业发展趋势分析与未来投资战略咨询研究报告
- 2025-2030年中国城市矿产行业前景动态及未来投资盈利预测报告
- 高温专项应急预案
- 咸宁活动策划方案案例
- 抗洪水应急预案
- 殡葬品营销方案
- 妇联换届应急预案
- 钢筋混凝土暗盖板涵技术交底
- 实操题目讲解
- 助听器效果评估
- 2023年宝钢股份用户满意度调查分析报告
- 沪教版小学英语语法及练习新版
- GB/T 6145-2010锰铜、康铜精密电阻合金线、片及带
- GB/T 3478.1-2008圆柱直齿渐开线花键(米制模数齿侧配合)第1部分:总论
- 服饰编码规则表参考范本
- 临床医学研究设计及统计学问题课件
- 《郑伯克段于鄢》PPT
- InSAR干涉测量解析课件
评论
0/150
提交评论