- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 5.6 循环的嵌套 如果循环语句的循环体内又包含了另一条循环语句,则称为循环的嵌套 例如: #include stdio.h main( ) { int i, j; for ( i=1; i10; i++ ) for ( j=1; j=i; j++ ) printf ((j==i)?%4d\n:%4d,i*j); } 外循环语句 内循环语句 * * 注意: while、do-while、for循环语句可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉。 多重循环程序执行时,外层循环每执行一次,内层循环都需要循环执行多次。 例如: for(a=1;a=10;a++) { for (b=0;b=5;b++) …… } 外循环执行了10次,内循环执行6次 循环正常结束时,内循环执行了10×6=60次 * * 5.7 循环结构程序设计 【例5.5】按每行输出5个数的形式输出Fibonacci数列的前20项 。 思路:Fibonacci数列的前几项是:1、1、2、3、5、8、13、21、34、…。此数列的变化规律是: 1 (n=1) 1 (n=2) fn-1+fn-2 (n2) fn= 设变量f1、f2和f3,并为f1和f2赋初值1,令f3=f1+f2得到第3项; 将f1←f2, f2←f3,再求f3=f1+f2得到第4项; 依此类推求第5项、第6项… 这是一种递推算法 应采用循环实现 * * 算法和程序 #define N 20 main( ) { int i,f1,f2,f3; f1=f2=1; printf(\n%8d%8d,f1,f2); for (i=3; i=N; i++) { f3=f1+f2; f1=f2; f2=f3; printf(%8d,f3); if (i%5==0) printf(\n); } } f1=1,f2=1并输出 for (i=3; i=20; i++) f3=f2+f1 f1=f2,f2=f3 输出f3 输出5个数 T F 换行 * * 举例2 【例5.12】判断输入的某个数m是否为素数。若是素数,输出“YES”,若不是,输出“NO”。 思路:素数是指只能被1和它本身整除的数,如5、7、11、17、…等。 分别用2、3、…,m-1尝试能否整除整数m。如果m能被某个数整除,则m就不是素数。 这是一种穷举算法 设除数为j,从2循环到m-1 * * 算法和程序: #include math.h main( ) { int j,m,k; printf(Enter an integer number: ); scanf(%d,m); for (j=2; j=m-1; j++) if (m%j==0) break; printf(%d ,m); if (j=m) printf(YES\n); else printf(NO\n); } 输入一个数m for (j=2; j=m-1; j++) m%j==0 T F 退出循环 j=m T F 输出YES“ 输出NO * * 程序的优化 对于穷举法来说,为了提高程序的效率,就要减少尝试次数。 #include math.h main( ) { int j,m,k; printf(Enter an integer number: ); scanf(%d,m); k=sqrt(m); for (j=2; j=k; j++) if (m%j==0) break; printf(%d ,m); if (j=k+1) printf(YES\n); else printf(NO\n); } 思考:如何输出100~200中所有的素数 * * 举例3 【例5.13】用牛顿迭代法求方程 2x3+4x2-7x-6=0 在x=1.5附近的根。 思路:设xn为一个接近xa的近似根,过(xn, f(xn)) 点做切线,切
文档评论(0)