




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四、四、breakbreak语句与语句与continuecontinue语句语句 五、五、gotogoto 语句语句 六、多重循环六、多重循环 七、梯形法求积分算例七、梯形法求积分算例 1 四、break语句与continue语句 前面三种循环结构都以某个表达式的判断结果作为循 环 条件,当表达式的值为零时,就立即结束循环。 这是一种遇零就结束循环的简短直接的判断。 C/C+另外提供了break语句、continue语句与goto 语 句来改变循环的转向。 break与continue语句用在while、dowhile和for循环 中,break尚可用于switch 语句。 break语句与continue语句的语法格式非常简单,各在 其 关键字后跟随一个分号 : break; 或 continue; 2 (1)while语句 (2)for语句 (3) do while语句 非零 while 零 循环体 break; . continue; 后续语句 表达式 后续语句 增量表达式 循环体 break; . continue; 零 非零 for 初始表达式 表达式 零 后续语句 非 零 循环体 . break; . continue; do 表达式 while 3 1.break语句 用于退出循环体或switch语句,在多重循环或switch语 句的嵌套中break语句仅只终止最紧密包含它的循环体或 switch语句,控制跳转到当前层的循环体或switch语句的 后 续语句; 2.continue语句 仅位于循环语句的循环体中,忽略跟随其后的剩余语 句,然后判断是否继续下一轮的循环,它的作用不是结束 循 环迭代,而是退出本次循环,继续下一轮的循环; 对于while和dowhile循环continue语句跳到循环的底 部或立即执行条件测试,对于常规的for循环,执行增量表 式之后再继续下一个回合的条件判断。 4 for循环和while循环具有下面的相当的关系: for(初始化表达式;条件表达式;增量表达式) 循环体语句; for (initialexpre; conditionexpre; stepexpre) statement; 相当于下面while循环: initialexpre; while (conditionexpre) statement; stepexpre; 初始化表达式; while (条件表达式) 循环体语句; 增量表达式; 但continue语句隐含地执行for循环的增量表达式。如 果while循环中的增量表达式位于continue语句之后,此时 这个增量表达式stepexpre可以不执行。这是两者不同之 处。 5 常规形式: for (initexpre;conditionexpre;stepexpre) statement; # include /求自然数的和 void main (void) int sum=0; for (int k=0; k int sum ( int k ) /此种形式用于函数体中,初始值直接从形参中获得 int s=0; for ( ; k # include void main (void) void main(void) for(int k=1;k10) break; /*输出:1,3,5,7,9,*/ /输出:2,4,6,8,10, 9 条件表达式内置与增量表达式内置 例输出奇数 例输出偶数 # include # include void main (void) void main (void) for (int k=0;) for (int k=0;) k+; k+; if (k10) break; /输出:246810 /输出:13579 10 无穷循环for (;) # include void main(void) int k=0,sum=0; / initexpre; for(; ;) /for (;) if( k100) break; / if(condition) break;条件判断为真退出循环 sum+=k; / statement; 条件判断为0执行循环体 k+; / stepexpre; 循环步长增量变动 cout int sum (int n=100) void main (void) int k=1,s=0; int k=0,sum=0; loop: loop: if (k100) goto end; s+=k+; sum+=k+; goto loop; goto loop; end: cout void main (void) int k=0,sum=0; loop: if (k100) goto end; sum+=k+; goto loop; end:cout #include const double e=exp(1); double expf () double const eps=1.0e-19; double sum=1; int n=1; while (e - sum eps) 17 double facn=1; for (int i=1; ieps) 条件判断中的e=exp(1),如果 写 为while (exp(1)- sum eps)则每次判断时都需执行函数 exp(1)求值计算。 对于与循环无关的函数调用应先计算出其值,以减少 不 必要的重复计算。 18 七、梯形法求积分算例 将一个区间a,b分成n个子区间: 其中 下面是积分的定义: 积分 如果右边的极限存在,其极限值就是定积分的结果。 理论上区间分得越细越逼近理论的解,但计算机求和次数 过 多导致的计算误差不容小视。 19 在计算机进行离散处理时应考虑两方面因素 : 一是区间适当细分; 二是收敛性的精度限制。 区间的划分存在两种途径: 一是静态地将区间分为n等分,n是预先定好 的 整数; 另一种是动态地确定区间划分数,将区间根据 某种细分机制,逐步细分,最终的区间划分数根据 收敛指标动态确定。 20 下面介绍的梯形算法属于区间一分为二的动态等分, 包 含复杂求积算法的基本要素。梯形法的求解步骤为: (1)首先分成一个区间时积分值为: h=b-a ,T2=0 上面的关系作为迭代的初始值。 ab x y 21 (2)分成两个相等的子区间时积分值为: bax y x1 22 (3)当分成相等的子区间时积分值为: xkxk1x y 23 (4)进一步将上面个相等的每一个子区间一分为二,对于 每一新的子区间采用梯形计算公式,其结果用前一个回合的 区间边界值予以表示得到: 这样就得到迭代关系式: x y 24 (5) 迭代的收敛准则。迭代根据一个精度指标限定,满 足这个指标认为计算收敛,这个指标为: 即相邻两次迭代求得的积分值之差小于一个非常小的 eps,则认为此时求得的就是所求的结果。 如果不满足收敛指标则继续迭代,即将区间的分点加 密 一倍。 迭代不一定收敛,因此通常内置一个最大迭代次数。 如 果超过最个迭代次数依然未得到正常的收敛结果,应考虑 采 取相关的手段。 如调整精度指标eps,过小的eps非但得不到合理的计 算结果反而因为计算的累计误差而发散。 25 例 梯形求积算法 #include # include extern double f(double); /函数原型说明 double Trapzoidal (double a,double b, const double eps=1.0e-8) double h=b - a; double T1=0.5*h*(f(a)+f(b); double T2=0; const int MaxIteration=0x7000; 26 for (int n=1;nMaxIteration;n*=2) double sum=0; double x=a+0.5*h; for ( int k=0; kn; k+,x+=h) sum+=f(x); T2=0.5*(T1+h*sum); if(fabs(T2-T1)eps) return T2; T1=T2; h/=2; printf (“Epsilon is too smalln“); return MaxIteration; 27 Trapzoidal函数第三个形参eps声明为 const double eps=1.0e-8,这是程序员对于函数使用者的 一个缺省建议,收敛指标eps取值于1.0e-8附近,函数容易 收敛。带缺省值的参数是C+新引进的语法现象。 上面的Trapzoidal函数通过两个被积函数进行具体算 题 考核,它们分别是: f(x)=1+x 精度指标eps影响函数 的积分 收 敛性,对于线性函数无影响。 28 例被积函数为 double f(double x) return exp(x)/(2.5+x*x); void main (void) printf(“%fn“,Trapzoidal(1,2,1.0e-7); printf(“%fn“,Trapzoidal(1,2,1.0e-13); 被积函数为输出结果为 0.947938 Epsilon is too small 28672.000000 29 例 被积函数为1+x double f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业模具制造工艺改进与保密及售后服务协议
- 抖音内容创作者法律顾问服务协议
- 国际科研合作外籍专家工作合同
- 高端国际旅游房车营地租赁及景区门票合作合同
- 定制化私人飞机机组人员劳动合同范本
- 跨境电商分销渠道合作协议
- 专属定制海外旅游方案合同
- 室内空气质量检测与室内空气质量改善实施合同
- 虚拟商品交易及佣金抽成费用协议
- 影视动画动作数据服务器租赁与数据安全审计服务合同
- 多源异构数据融合关键技术研究
- 护患沟通与护患纠纷防范课件
- 食品安全监督抽查与抽检培训
- 脐带脱垂护理病例讨论
- 《不朽的贝尼尼雕塑》课件
- 《如何阅读文献》课件
- 建筑工程抗浮技术标准JGJ476-2019
- 云计算标准体系研究报告
- 生产线技改后效果对比
- 故事技巧叙事性非虚构写作
- 五年级美国大联盟计算和几何专题讲义教师版(含题目翻译答案解析)
评论
0/150
提交评论