0501-Supplement【荐】.pptVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
0501-Supplement【荐】.ppt

循环控制实践 吴清锋 2009年秋 提纲 概述 常见的几种应用 多输入求解问题 多项式求值 尝试法 应用题(数学模型) 方程求根 循环的嵌套 输出的个数控制 概述 循环的题型丰富,使用非常广泛! 掌握循环语句的书写规范,是最低层次的要求;希望大家能够总结各种题的解题规律! 很多问题你不会解,可能不是你不会写,而是你没有掌握好相关的数学知识! 更难的是,解题思路用自然语言表达可能还容易,但是用C语言规范表达(特别是在如何将问题中的迭代转换为循环时,这是一个难点; 不但要看别人是如何书写的,关键是自己要合上课本,能尝试着编写! 一定要多练习,循环很关键! 多输入求解问题 相关题目有: P120 中(7)程序片段;P128 例6.10 P129 习6.1 解题的思路 由于无法确定输入的数据的个数,在循环输入中,如何实现输入的结束,是一个关键点! 类似的有:求一个学生多门课成绩的平均分 容易犯错的地方: for ( ; (c=getchar())!=‘/n’; ) … 假定输入的是87 98,那么接受的是字符 而如何判断输入的结束呢?假定输入为负数时! 多项式求值(1) 相关题目有: P114 例6.2(循环次数固定),P124 例6.6(循环次数不固定) P129 习6.3,6.4,6.5,6.8 解题的思路 累加,必须使用循环: 循环条件的构造 此时,首先判断循环的次数是否是固定的? 次数确定,那么考虑: 引进循环变量,同时让循环变量,在循环体中充当一定的角色(如,形成求和过程中表达式的项!) 次数不确定,那么考虑: 题目中是否有其他隐含的条件,能用于构成循环条件的(如对于项的精度的要求!) 循环体的构造 构造表达式的和(积) 表达式中每个项的构造 多项式求值(2) 容易忽视的问题 累加的初始值必须设,而且应该设置成0; 数据类型的定义 思考:n为何定义成float,而不是整型? 转为for? fabs(t)1e-6的必要性 如果直接写fabs(t)0,则会造成死循环 习题中的问题 6.3中问题 1 知道循环次数,建议使用for; 2 a不是原来的a,需要把最早的a保存起来; 6.4中问题 1 累加和构造项的语句的位置问题; 2 累加和的类型问题; 6.5中问题 实质是多次单独的一层循环! 多项式求值(3) 补充练习中的问题 习题1,2,3; 输入m和n孰大孰小的问题 应该使用数的交换! 构造项中若是有对分母进行构造的,注意类型的定义(切不可定义成int型); 尝试法(逻辑判断)(1) 相关的题目有: P126 例6.8 P129 习6.6,6.7 解题的思路 题眼中往往将出现“判断”操作! 在编程中,引入循环,即循环一般是构造数字的过程(如:形成素数判断中的分母,或形成水仙花数中待判断的数),并且借助循环体中的if语句来实现性质是否成立的判断; 如何跳出循环呢?使用break或continue! 尝试法(逻辑判断)(2) 容易忽视的问题 为何用break;而不用continue;? 循环中的条件如何构造出来的? 循环变量定义成整型! 并且,注意k=sqrt(m); sqrt()是双精度,只取整数! 值得强调,使用一层循环来实现一个数的素数性质判断! 思考,最后为何要添加if (ik)? 这是为了具体在屏幕上输出!从程序的代码执行过程来看,循环有两个出口,如果是从常规出口跳出循环的,就是一个素数(此时特征是ik);而从break出口跳出循环的,则不是个素数(此时特征是i=k)。这两个出口的特性差异就在于是否ik;因此,据此来实现输出的判断条件的构造。 尝试法(逻辑判断)(3) 习题中的问题 6.6中问题 如果,仅仅是判断某个从键盘上输入的数是否为水仙花数,那就不需要循环!但是,现在是输出所有的“水仙花数”,因此对于每个三位数都拿来作“条件”的判断; 用break;还是continue;的问题? 取决于,是否结束所有循环,还是结束本次循环? 在循环体中,if判断中条件的构造问题: 为何建议使用n==i*i*i+j*j*j+k*k*k;而不是用pow(); 主要是考虑类型的问题会影响相等比较的判断; 6.7中问题 如果,是判断一个数是否是“完数”,是否需要循环? 是需要的,循环用于求出因子!如何求因子呢?循环逐一尝试! 那么现在是求,1000之内所有完数,那么就需要用循环的嵌套,外循环实现,取出一个数,内循环实现将该数判断性质! s=0;的位置问题!若放在外循环之外,那么前个数的所有因子的和将代入并影响到下一个数的因子的和的问题! 尝试法(逻辑判断)(4) 补充习题中的问题 习题4 输入多少个数,是不确定的,因此可以先构成一个“死循环”,然后借助if配合break;构造跳出循环的条件; 输入

文档评论(0)

cnsg + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档