




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章 循环结构,西安电子科技大学模式识别与智能控制研究所,概述,顺序结构 分支结构 循环结构 在一定的条件下,反复执行某段程序 被反复执行的程序段称为循环体,循环结构的几种实现方法,while循环语句 do-while循环语句 for循环,while循环语句,格式: while(表达式)语句 特点: 先判断,后执行,流程图,例1:计算1+2+3+n,例1:(求15所有整数之和) int i=1; /* 初始化准备 */ float sum=0; /* 初始化准备 */ while(i=5) /* 当i=5时重复以下语句*/ sum = sum + i; i+; ,循环等效于 sum = sum + i; i+; sum = sum + i; i+; sum = sum + i; i+; sum = sum + i; i+; sum = sum + i; i+;,do_while循环,格式: do 循环体 while(表达式) 特点: 先执行,后判断 循环体至少执行一次,流程图,例2 计算1+1/4+1/9+1/n2,计算到最后一项小于10-2 int i=1; double sum=0,t; do t = 1/(i*i); sum = sum + t; i+; while(t=1.0e-2); printf(“sum=%lfn”,sum);,for循环,格式: for(表达式1;表达式2;表达式3) 语句,流程图,表达式1通常为循环初始化 表达式2为循环条件 表达式3通常为循环变量修正,例3 求1开始的前n个奇数之和,求1开始的前n个奇数之和(1+3+5+n) printf(“Input Number:”); scanf(“%d”,多重循环,含义 当一个循环的循环体中又包含一个完整的循环结构时,称为多重循环或循环嵌套 例如:,while(.) while() ,while(.) for(;.) ,例4 打印九九表,1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 . 9 18 27 36 45 54 63 72 81,例4 继续(99.c),main() int i,j; for(i=1;i10;i+) /* 每次循环打印一行 */ for(j=1;j10;j+) /* 每次循环打印一列 */ printf(“%4d”,i*j); printf(“n”); /* 一行打印完毕,换行 */ ,例4 继续,问题: 只打印九九表的上三角,该如何编程? 1 2 3 4 5 6 7 8 9 4 6 8 10 12 14 16 18 9 12 15 18 21 24 27 . 81,例4 继续(99.c),main() int i,j; for(i=1;i10;i+) /* 每次循环打印一行 */ for(j=1;j10;j+) /* 每次循环打印一列 */ if(ji) printf(“ “); else printf(“%4d”,i*j); printf(“n”); /* 一行打印完毕,换行 */ ,Break语句,功能: 跳出switch结构 跳出一层循环,例: for(i=0;i+) printf(“i=%dn”,i); if(i=5) break; ,例:用公式/4=1-1/3+1/5-1/7+.计算的近似值,直到最后一项小于0.0001。,float pi = 0; int i = 0; int sign=1; while(1) t = 1.0/(2*i+1); if(t0.0001) break; pi = pi + sign*t; sign = -sign; i+; pi = pi * 4;,continue语句,结束本次循环,立刻进行下一次循环 与break的区别 break结束整个循环 contitue结束本次循环,不结束整个循环,例:把100到150之间的不能被3整除的数输出,每行输出10个数。,int i = 0, n; for(n=100;n=150;n+) if(n%3=0) continue; printf(“%4d”,n); i+; if(i%10=0) printf(“n”); ,循环语句小结,while循环 dowhile循环 for循环 break跳出整个循环 continue结束本次循环,进入下一次循环,While(条件) . ,do while(条件),for(表达式1:表达式2:表达式3) ,算法举例,穷举法 将所有可能的情况列举出来进行检验,例: 从键盘输入一个大于2的整数n,判断n是不是素数,分析 只能被1和它本身整除的数是素数,如果2n1中的任一整数能够整除n,则n不是素数,算法举例,int i=2,flag=1; while(in) if(n%i=0) flag=0; i+; if(flag=1) printf(“%d is primen”,n); else printf(“%d is primen”,n);,算法举例,二分法 将结果所在的空间一分为二,确定结果在哪个子空间中,然后再将该子空间一分为二,如此循环反复,直到子空间的大小小于所需的精度,将该子空间中的任何一个结果作为问题的解。,二分法,例:二分法求方程f(x)=2x3-4x2+3x-6=0的根,要求误差小于105 算法流程 首先必须确定一个初始区间x1,x2,确保该区间之内必定有一个根。 将区间x1,x2一分为二,x1,xt和xt,x2,xt可以任意确定,如取xt=(x1+x2)/2 判断x1,xt和xt,x2哪一个有根,如果x1,xt有根,则在其中继续二分,令x2=xt;否则在xt,x2中二分,令x1=xt 重复直到x1,x2小于精度要求,二分法,如何判断一个区间x1,x2之内是否有根: 若f(x1)f(x2)=0 );,二分法,如何利用循环不断二分? 若f(x1)f(xt)1.0e-5) /精度不够,继续二分 xt=(x2+x1)/2; if( f(x1)*f(xt)=0 ) x1=xt; else x2=xt; xt = (x1+x2)/2; /最终解,二分法,程序列表 do /反复尝试 puts(“input x1 x2:”); /显示提示 scanf(“%f%f”, /最终解,算法举例,迭代法(递推法) 现任意设定一个值x1作为问题的近似解,根据x1推出一个更加准确的近似解x2,再由x2推出更加准确的近似解x3,如此反复推下去,直到得到足够准确的近似解为止。 例8 (P77例5.11) 迭代法求方程2x3-4x2+3x-6=0的根,要求误差小于105,算法举例,迭代法求方程2x3-4x2+3x-6=0的根,要求误差小于105 方程变换 x2(2x-4)=6-3x 2x-4=(6-3x)/x2 x=(4+ (6-3x)/x2)/2 令f(x)=(4+ (6-3x)/x2)/2,x2=1.0; do x1=x2; x2=f(x1); while(fabs(x1-x2)=1.0e-5);,迭代法,牛顿迭代法 令f(x)=2x3-4x2+3x-6任取x1作为f(x)=0的初始解,以x1点昨切线,与x轴相交处为x2,则x2必比x1更接近方程的真实解x#。,由图可知 : f(x1)=df(x1)*(x1-x2) 即: x2 = x1 - f(x1)/df(x1),迭代法,牛顿迭代法 令f(x)=2x3-4x2+3x-6 则df(x)=6x2-8x+3,f(x1)=df(x1)*(x1-x2) x2 = x1 - f(x1)/df(x1),x2=1.0; do x1=x2; /以上一次的解为起点 dfx1=df(x1); /求导数 fx1=f(x1); /求函数值 x2=x1-fx1/dfx1; /迭代出新的解 while(fabs(x1-x2)=1.0e-5); /精度是否足够,符号常量,又称宏定义,是一种编译预处理功能 无参数宏定义 #define 宏名 字符串 #define PI 3.1416 Arc = 2 * PI * r; = Arc = 2*3.1416*r; 带参数宏定义 #define 宏名(参数表) 字符串 #define S(a,b) a*b Area = S(2,1); = Area = 2*1;,符号常量,宏定义不是C语言的语句,末尾不能有分号;如果有分号,替换时将代入,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版在线教育平台培训服务合同
- 2025版手机品牌专卖店抵押融资合同
- 2025年度生态住宅代理销售与生态环保合作协议
- 2025版教育培训机构合作合同到期续签范本
- 2025年度土地储备项目施工场地清理平整与土地平整工程合同
- 2025版环保处理设备转让与技术服务协议
- 2025年度商住两用房产代理销售执行协议
- 2025版智能电网外委施工安全责任协议书
- 2025年物流行业短信通知服务合作合同
- 2025年度影视广告制作与摄影摄像服务合同
- 流动式起重机械检验记录表
- 大学信息与网络安全保密管理办法
- 汽车保养基础知识优秀课件
- 青少年运动员 运动损伤的预防 课件
- 音乐《上学歌》课件
- 绿色校园创建资料
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 2022年十部经典的三级片电影
- 六三制新青岛版四年级科学上册第一单元《动物王国》全部课件(一共5课时)
- 顶推法钢箱梁安装施工方案
- 中国诗词协会入会申请表
评论
0/150
提交评论