版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 循环结构程序设计,循环语句 break 和 continue 语句 循环嵌套,5.1 循环语句,问题 打印整数110 打印整数1100 打印整数1n,printf(%d, 1); printf(%d, 2); printf(%d, 10);,i=1; printf(%d, i); i+; printf(%d, i); i+; printf(%d, i); i+;,i=1; while(i=10) printf(%d, i); i+; ,while 语句,while (表达式) 语句;,语 句,表达式,非0,0,i=1; while(i=10) printf(%d, i); i+; ,循
2、环体 循环不变式 改变循环条件,10 求 sum= i i=1 sum=0 sum+1 sum sum+2 sum sum+3 sum sum+10 sum,sum=sum+?,sum=0; i=1; while(i=10) sum=sum+i; i+; ,循环不变式,for 语句,for (exp1; exp2; exp3) 语句;,exp3,exp2,非0,0,exp1,语 句,循环体,while (表达式) 语句;,for (exp1; exp2; exp3) 语句;,exp1; while(exp2) 语句; exp3; ,while 和 for,while 和 for,while (
3、表达式) 语句;,for (exp1; exp2; exp3) 语句;,exp1; while(exp2 语句; exp3; ,sum=0; i=1; while(i=10) sum=sum+i; i+; ,sum=0; for(i=1; i=10; i+) sum=sum+i;,程序举例,例T1-1 求1+2+3+4+ n 例T1-2 求1+1/2+1/3+1/4+ 1/n 例T1-3 求1-1/2+1/3-1/4+ 1/n 例T1-4 求1-1/3+1/5-1/6+ 前n项之和 例T2-1 求n! 例T2-2 求xn 例T3-1 求1-1/3+1/5-1/7+ ,直到最后1项的绝对值10-
4、5 例T4-1 输入100个整数,求其中正数之和 例T4-2 输入一个正整数n, 再输入n个数,输出最大值 例T5 输出Fibonacci序列前20个数,例T1-1 求1+2+3+4+ n,算法: i =1 to n s=s+t t+ i+,程序段: s=0; for(i=1; i=n; i+) s=s+i;,算法: i =1 to n s=s+i i+,例T1-2 求1+1/2+1/3+ 1/n,算法: i =1 to n s=s+t t=1.0/i i+,程序段: s=0; for(i=1; i=n; i+) s=s+1.0/i;,算法: i =1 to n s=s+t t+ i+,例T1
5、-3 求1-1/2+1/3-1/4+ 1/n,i =1 to n s=s+t t=1.0/i i+,程序段: s=0; flag=1; for(i=1; i=n; i+) s=s+1.0/i*flag; flag=-flag; ,算法: i =1 to n s=s+t t=1.0/i*flag flag=-flag i+,例T1-4 求1-1/3+1/5- 前n项和,算法: i =1 to n s=s+t t=1.0/i*flag flag=-flag i+,程序段: s=0;flag=1;tt=1; for(i=1; i=n; i+) s=s+1.0/tt*flag; tt+=2; flag
6、=-flag; ,算法: i =1 to n s=s+t t=1.0/tt*flag flag=-flag tt=tt+2 i+,例T2-1 求n!,算法: i =1 to n f=f*t t+ i+,程序段: f=1; for(i=1; i=n; i+) f=f*i;,算法: i =1 to n f=f*i i+,例T2-2 求xn,算法: i =1 to n f=f*t t+ i+,程序段: f=1; for(i=1; i=n; i+) f=f*x;,算法: i =1 to n f=f*t t=x i+,例T3-1 求1-1/3+1/5-直到最后1项的绝对值10-5,程序段: s=0; f
7、lag=1; tt=1; t=1; while(fabs(t) = 1E-5) s = s+t; flag = -flag; tt += 2; t = 1.0/tt*flag; ,i =1 to n s=s+t t=1.0/tt*flag flag=-flag tt=tt+2 i+,算法: while |t|=1E-5 s=s+t flag=-flag tt=tt+2 t=1.0/tt*flag,例T4-1 输入100个整数,求其中正数之和,# include void main() int i , sum=0, x; for (i=0; i0) sum=sum+x; printf(%d,su
8、m); ,例47 求最大值,输入3个数,输出其中的最大值。 #include void main( ) int a, b, c, max; printf(input a, b, c:n); scanf(%d%d%d, ,a max b c,max,max,例T4-1输入一个正整数n, 再输入n个数,输出最大值,void main() int i , max, n, x; scanf(%d, ,max,x,例T5 输出Fibonacci序列前20个数,1, 1, 2, 3, 5, 8, x1 x2 t x1 x2 t,程序段: x1=x2=1; printf(%d %d, x1, x2); fo
9、r(i=1; i=18; i+) t=x1+x2; printf(%d , t); x1=x2; x2=t; ,x1=x2=1; t=x1+x2; x1=x2; x2=t;,do-while 语句,do 语句 while (表达式);,i=1; do printf(%d, i); i+; while(i=10);,语 句,表达式,非0,0,while (表达式) 语句;,while 和 do-while,do 语句 while (表达式);,先循环,后判断,先判断,后循环,while 和 do-while 的用法比较,输入一些数,求和,直到输入负数为止。 void main( ) int x,
10、 sum=0; do scanf(%d, ,void main( ) int x, sum=0; scanf(%d, ,输入 1 2 5 -10,输入 -10 1 2 5,sum-x,5.2 break 和 continue 语句,#include stdio.h void main( ) char c; int i=0; for (i=0; i10;i+) c=getchar(); if (c=n) break; putchar(c); ,循环何时结束?,c=getchar(); for (i=0; i10 ,for (i=0; ;i+) c=getchar(); if ( i = 10 |
11、 c = n) break; putchar(c); ,1,break 流程,结束循环 while(exp) 语句1 if (expb) break; 语句2 ,continue 流程,跳过continue后面的语句,继续下一次循环 while(exp) 语句1 if (expc) continue; 语句2 ,break 和 continue,#include stdio.h void main( ) char c; int i=0; for (i=0; i10;i+) c=getchar(); if (c=n) break; putchar(c); ,#include stdio.h vo
12、id main( ) char c; int i=0; for (i=0; i10;i+) c=getchar(); if (c=n) continue; putchar(c); ,输入:abc efgh 123 ,输出:abcefgh1,输出:abc,例T6 输入m,判断m是否为素数,算法:除了1和m,不能被其它数整除。 m %2 %3 %4 %5 不是素数 | =0 =0 是素数 for(i=2; in) printf(yesn) else printf(non”);,例T7 将一个正整数逆序输出,确定:循环条件和循环不变体,12345 5 4 3 2 1 12345 % 10 = 5 1
13、2345 / 10 = 1234 1234 % 10 = 4 1234 / 10 = 123 123 % 10 = 3 123 / 10 = 12 12 % 10 = 2 12 / 10 = 1 1 % 10 = 1 1 / 10 = 0 结束,循环不变式 x%10 x=x/10 循环条件 x=0,scanf( “%d”, ,例4-10,# include void main( ) char c; printf(Please input a character:n); c = getchar(); if(c=a 输入一行字符,统计英文字母、数字和其他字符。,例T8 输入一行字符,统计英文字母、
14、数字和其他字符,# include void main( ) char c; int letter=0, digit=0, other=0; c = getchar(); while(c!=n) if(c=a ,while(c = getchar()!=n),5.3 循环嵌套,while (表达式) 语句;,例T9-1.1 1!+2!+n!,s=0; for(k=1; k=n; k+) s=s+f; ,f=1; /* n! */ for(i=1; i=n; i+) f=f*i;,f=1; for(i=1; i=k; i+) f=f*i;,算法: k=1 to n s = s + f f = k
15、! k+,例T9-1.2 1!+2!+n!,算法: k=1 to n s = s + f f = k! k+,s=0;f=1; for(k=1;k=n;k+) f=f*k; s=s+f; ,算法: k =1 to n s = s+f f = f*k k+,例T9-2 兑换零钱,将10元钱换成5角、2角、1角的零钱(至少各一枚),列出所有可能的方案。 c5: 5角的数量, 1, 20) c2: 2角的数量, 1, 50) c1: 1角的数量, 1, 100) 5*c1+2*c2+c5=100,将10元钱换成5角、2角、1角的零钱 c5: 5角的数量, 1, 20) c2: 2角的数量, 1, 5
16、0) c1: 1角的数量, 1, 100) 5*c5+2*c2+c1=100,for (c5=1; c520; c5+) for (c2=1; c250; c2+) for (c1=1; c1100; c1+) if (5*c5+2*c2+c1=100 ) printf(%d %d %dn, c5, c2, c1);,c5=1 c2=1 c1=1, 99,2, 49,2, 19,将10元钱换成5角、2角、1角的零钱 c5: 5角的数量, 1, 20) c2: 2角的数量, 1, 50) c1: 1角的数量, 1, 100) 5*c5+2*c2+c1=1000,for (c5=1; c520; c5+) for (c2=1; c250; c2+) for (c1=1; c1100; c1+) if (5*c5+2*c2+c1=1000 ) printf(%d %d %dn, c5, c2, c1);,for (c5=1; c520; c5+) for (c2=1; c250; c2+) printf(%d %d %dn, c5, c2, 1000- 5*c5+2*c2);,例T9-3 输出10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不同风格家居的室内软装饰品选择与搭配
- 2025年莱芜从业资格证模拟考试题货运考题
- 2025年恩施货运考试题目
- 2025年辽宁货运从业资格证模拟题
- 2025年十堰大车货运资格证考试题
- 2025年淮北道路货运从业资格证模拟考试下载什么软件
- 2025年永州从业资格证模拟考试题下载货运
- 内容创新在办公自动化中的应用
- 创意展览设计在吸引客户中的重要性
- 人教版数学八年级上学期《期末检测试卷》含答案解析
- 幼儿游戏的课件
- 中药鉴定学智慧树知到答案2024年中国药科大学
- 现代教育技术智慧树知到期末考试答案章节答案2024年济宁学院
- 现代通信技术导论智慧树知到期末考试答案章节答案2024年北京科技大学
- 旅游出行安全告知书
- (完整版)服装生产工艺流程图汇总,推荐文档
- 优秀团支部申报表
- 初中体育 健美操初级12个教案
- 常德市垃圾填埋场设计计算说明书
- 第三章 高分子的溶液性质
- 第二讲锅炉水压试验
评论
0/150
提交评论