- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
循环结构及一维数
循环结构及一维数组习题讲解 期中习题课 知识要点回顾 循环结构 定义:程序设计中需要按照某种规律反复不断执行某一段程序;能够完成此功能的程序结构称为“循环结构”,被反复执行的“程序段”称为循环体. 构成循环的要素: A. 构成循环的基础是什么 即确定哪些操作需要反复执行 B. 循环体要完成的功能是什么 指解决问题算法的C语句实现 C. 在什么情况下结束循环过程 一般使用关系表达式或者逻辑表达式 判断循环是否继续执行 关键点分析 A.循环结构的关键是有始有终. 即如何根据实际要求设置条件来限定循环 次数 B. 循环体中应包含一条或多条使循环趋于 结束的语句,让判断循环是否能够执行的逻辑表达式不成立。 C. 相关变量初始化根据实际情况放置在程序合适的位置(往往在循环开始之前) 循环结构程序示例 C语言的循环结构有while,do-while,for三种类型 解题时使用两层(及多层)循环结构的方式称为循环嵌套,要点:外层循环变量变化一次,内层循环变量遍历一圈。 常见应用:求最大公约数最小公倍数、求素数、鸡兔同笼、百钱百鸡、给定数学公式求和(乘积)、数列求和,求数列前n项、阶乘、打印图形、水仙花数、完数等。 循环结构程序示例 例1: 对于1000以内所有满足条件的三位数x,求表达式的值: 1。若x能同时被3,5,7整除则求 1+2+3+。。。+x的值 2。若x是水仙花数,则求 1*1*2*1*2*3*。。。*1*2*3*...*(x/100) 循环结构程序示例 对于循环问题的求解,其思路基石在于如何正确地使用“遍历”的思想解决问题。 如本例:题目要求使用1000以内的三位正整数进行相关判断,实现不同功能,那么首先“遍历”的范围就应该从100-999,在此基础上,题目变成选择结构求解的问题,每个选择条件成立时又独立构成循环分别实现求累加和以及求连续整数阶乘的乘积问题。 for(x=100;x=999;x++) //注意循环嵌套的位置 { if(x%(3*5*7)==0) { s=0; //注意相关变量初始化位置 for(i=1;i=x;i++) s=s+i; printf(3,5,7公倍数:x=%d,s=%ld\n,x,s);} a=x/100; b=x/10%10; c=x%10; if(a*a*a+b*b*b+c*c*c==x) { s=1;k=1; //注意相关变量初始化位置 for(i=1;i=x/100;i++) { k=k*i; s=s*k; } printf(水仙花数:x=%d,s=%ld\n,x,s);} } 运行结果 分析:本题中用到两层循环嵌套,对于不同层次的循环需要遍历的范围不同,另外用到求几个数的公倍数,分解一个三位数不同数位数值,以及求水仙花数的算法。 for(x=100;x=999;x++) { … for(i=1;i=x;i++) … for(i=1;i=x/100;i++) … } 循环结构程序示例 当题目中无法给出准确的循环次数时,需要通过特定的循环条件来判断循环是否该结束,此时往往使用while或do-while结构更方便理解。 例2 求ex=1+∑(xn/n!) 当误差小于0.0001时循环结束,x10为键盘输入的正整数. n=1,2,3,4…. scanf(x=%d,x); s=1;k=1;t=1;n=1; //k为x的n次方,t为n!,s为最终求和项 do {k=k*x; t=t*n; n++; s=s+k/t;} while (k/t=0.0001); printf(e的x次方值为:%.4lf,s); 运行结果 分析:本题中误差小于0.0001是指当求和的某一项值小于0.0001时,求和时加上或者省略该项总和的差值范围在正负0.0001之间。由于不知道经过多少次循环才能达到要求,因此不能通过给循环变量设定已知终值的方式解题,而应通过判断求和项的大小确定误差范围,终止循环继续执行。 本例仅使用一次循环来实现具体算法,是借助“求后一次值时用到前一次的结果”的思路,如n!=(n-1)!*n 循环结构编程相关补充 循环结构用以解决重复性操作较多的
文档评论(0)