- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 共循环了多少次? 完整程序1:一层for循环(利用自定义函数) #includestdio.h int sq(int n) {int m,f=0; for (m = 1; m * m = n; m++) if (m * m == n) f=1; return f; } int main() { int m, n; for(n=1; n = 200; n++) if(sq(n)) printf(%d , n); printf(\n); return 0; } 函数定义 函数调用 * 完整程序2:两重for循环(只有主函数) #includestdio.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; } 内层循环结束的两种情况: 1,找到m使m*m==n(n是完全平方数) 2,试探了所有可能,但都不成功(n不是) 共循环了多少次? * 具有累计循环次数功能的完整程序: #include stdio.h int main () { int m, n, count = 0; for (n = 1; n = 200; n++) for (m = 1; m * m = n; m++) { count++; if (m * m == n) printf(%d , n); } printf(“%d\n“, count); return 0; } 共循环了1799次 * 方法二:需要打印的一定是从1开始连续几个整数的平方,可从1开始打印到平方大于200为止。 for (n = 1; n * n = 200; ++n) printf(%d , n * n); /*注意打印什么*/ 方法一产生所有备选数据(1到200的整数),检查排除不合格的。生成与检查是解决问题的常用方法。 方法二是针对具体问题的特定方法。 * #includestdio.h int main() { int termn, n; for (n = 1,termn = 1;termn = 200; n++) { printf(%4d,termn); termn += 2*n+1; } return 0; } 方法三:还可以考虑利用递推公式求平方数程序: * 例2,艰难旅程(浮点误差)。乌龟要去环球。第1秒爬1米,第2秒爬1/2米,第3秒爬1/3米,第4秒爬1/4米,…。问一小时能爬出多远?爬20米需多少秒? 一小时能爬多远算法: 1.d(距离,实数); s(时间,整数); 2. d=0.0;s=1; 3. d=d+1/(实数)s; s=s+1; 4.如果s=3600,转3; 5.否则,输出d; 爬20m需多少秒算法: d(距离,实数); s(时间,整数); d=0.0,s=1; d=d+1/(实数)s;s=s+1; 如果d20.0,转3; 否则,输出s-1; 根据数学,乌龟能完成环球,可以爬得任意远。 这里想比较float和double的计算误差情况。 s-1? * n秒能爬x米的函数float distfun(long n) float distfun(long n) { long i; float x = 0.0; for (i = 1; i = n; ++i) x += 1/(float)i; return x; } 例2,艰难旅程(浮点误差)。乌龟要去环球。第1秒爬1米,第2秒爬1/2米,第3秒爬1/3米,第4秒爬1/4米,…。问一小时能爬出多远?爬20米需多少秒? * 例2,艰难旅程(浮点误差)。乌龟要去环球。第1秒爬1米,第2秒爬1/2米,第3秒爬1/3米,第4秒爬1/4米,…。问一小时能爬出多远?爬20米需多少秒? 20米需要多少时间。写出下面函数: long scndsfun(float d) /*d为爬行距离*/ { long i; float x = 0.0; for (i = 1; x d; ++i) x += 1/(float)i; return i - 1; } d=20 * 写下面语句,执行时总也不输出: printf(%lds, %fm\n,scndsfun(20.),20.); 修改为如下语句: for (x = 10.0; x = 20.0; x +
您可能关注的文档
最近下载
- 文明用语班会课件.pptx VIP
- 2024年中国高血压防治指南解读 PPT课件.pptx VIP
- 《精密机械与仪器》课程设计--压力表的结构设计.doc VIP
- 《致大海》课件(共42张PPT)-高中语文选择性必修 中册课件.pptx VIP
- 2025年天津大学福州国际联合学院科研管理与成果转化岗人员招聘备考题库及1套完整答案详解.docx VIP
- 2025年浙江省高职单招单考《农艺类》试卷 完整版231.pdf VIP
- 社区呼吸道感染.ppt VIP
- 国有企业内部薪酬如何分配?人社部办公厅印发的这份《指引》值得参考!.doc VIP
- 团队角色自测问卷.pdf VIP
- 2025年广东省广播电视网络股份有限公司招聘笔试参考题库附带答案详解.pdf
原创力文档


文档评论(0)