- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6 基本编程技术讲义
基本编程技术 要目 循环程序设计 简单的重复动作 递推、迭代和逼近 浮点计算的误差累积 从循环的中间退出 循环中的变量 程序设计:关注基本技术和规律 要完成一个程序,首先要分析问题寻找解决方案,这需要聪明才智和想象力,以及相关领域的知识和技术 要把设计变成可运行程序,既需要发挥智力,又需要有条有理的工作,还要非常细心。一个小错误就可能使程序无法编译或不能正确执行 学习程序设计需要注意规律性的东西 三种流程模式是重要总结,需要掌握其使用方法和规律 顺序模式最简单 选择模式:要确定判断条件以及不同情况下的动作 开始学习编程的难点就在实现重复执行的循环。重复执行比较复杂,牵涉问题多 循环程序设计 在程序里写循环的基础是发现计算中需要循环。应注意计算中的重复性动作,通过引进循环可能统一描述和处理 常见的重复动作实例,如需要: 对一批类似数据做同样的加工处理 累积一批可以按规律计算出的数据(累加等) 反复从一个结果算出下一结果(递推) 有些情况可以或需要用循环处理: 如果重复次数确定,可以写一些独立操作,但重复次数多时就应该考虑用循环统一描述,以简化程序 如果重复次数无法确定,就必须用循环。因为这时不知道写多少个独立的操作,无法处理 基本循环技术 例:求13到315的所有数的平方根之和 可以一个个地加,但更方便的是写一个循环完成工作 需要一个变量保存部分和,逐步把各个平方根加上去 需要一个变量保存变动轨迹,从初值开始每次修改 很典型for循环。假定已有总和变量sum和循环变量n: for (sum = 0.0, n = 13; n = 315; ++n) sum = sum + sqrt(n); 这里n值递增,称为向上循环。也可以用向下循环: for (sum = 0.0, n = 315; n = 13; --n) sum += sqrt(n); 两个循环等效。没有特殊需要都应采用向上循环 请用while语句重写上面两种方式 循环控制和浮点数 求 [13, 315] 间每隔7的各整数之和也很容易 课堂练习 一般不用浮点数控制循环,尤其是增量为小数或包含小数时。例:求从0到100每隔0.2的数的平方根之和。写: double sum, x; for (sum=0.0, x=0.2; x=100.0; x+=0.2) sum += sqrt(x); 有问题。浮点计算有误差,不能保证循环体执行500次 应写: int n; double sum; for (sum = 0.0, n = 1; n = 500; ++n) sum += sqrt(0.2*n); 求一系列完全平方数(多种算法) 考虑打印出 1 到 200 间的完全平方数。存在多种方法 方法一:逐个检查区间里各个整数,遇到平方数就打印。 重复做,每次检查一个数。循环的框架为: for (n = 1; n = 200; ++n) if (n 是完全平方数) 打印 n; 其中的一个数是否完全平方数没有直接判断手段。可以考虑顺序检查,是否有某个数的平方恰为n 这构成了(循环内的)新循环,需要另一循环变量 另m从1开始递增,直至m*m大于n结束,等于就输出n: for (m = 1; m * m = n; ++m) if (m * m == n) 打印 n; 求一系列完全平方数 综合起来可得到完整程序: #include stdio.h int main () { int m, n; for (n = 1; n = 200; n++) for (m = 1; m * m = n; m++) if (m * m == n) printf(%d , n); printf(\n); /* 最后输出一个换行符 */ return 0; } 内层循环结束: 找到m使m*m==n(n是完全平方数) 试探了所有可能,但都不成功(n不是) 求一系列完全平方数 可以考虑把判断完全平方数定义为函数(请自己做) 方法二:可看到需要打印的一定是从1开始连续的一些整数的平方,可以从1开始打印到某个数平方大于200 for (n = 1; n * n = 200; ++n) printf(“%d ”, n * n); /*注意打印什么*/ 方法一:产生所有备选数据(1到200的整数),检查排除不合格的。生成与检查是解决问题的常用方法。 方法二:是针对具体问题的特殊方法,通常更简单,效率更高。解决问题时应特别注意挖掘这种特殊方法 判断素数(定义谓词) 写一个函数判断整数是否为素数 类型特征可用 int isprime(int),令其返回0/1值 n是素数当且仅当它没有真因子。m是n的因子可以用条件(n%m == 0)描述,
您可能关注的文档
最近下载
- 神经系统的分级调节ppt课件.pptx VIP
- AI测试练习试题及答案.doc
- 2025广西南宁江南区“点对点”送工和乡村公岗专管员招聘2人备考练习题库及答案解析.docx VIP
- 肿瘤防治策略与最新进展.docx VIP
- 第五章植物-病原互作过程中效应子的作用.ppt VIP
- 湘科版《科学》四年级上册全册教案.doc VIP
- IEC_62893-4-1-2020 额定电压不超过 0.61 KV 的电动汽车充电电缆 – 第 4-1 部分:符合 IEC 61851‑‑1 模式 4 的直流充电电缆 – 不使用热管理系统的直流充电.pdf VIP
- 机器人集成解决方案 (机器人+).pdf VIP
- 消除艾滋病、梅毒和乙肝母婴传播项目工作制度及流程(模板).pdf
- 2025广西南宁市江南区“点对点”送工和乡村公岗专管员招聘考试备考试题及答案解析.docx VIP
文档评论(0)