- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例4-8 将一个正整数逆序输出 确定:循环条件和循环体(循环不变式) 12345 5 4 3 2 1 12345 % 10 = 5 12345 / 10 = 1234 1234 % 10 = 4 1234 / 10 = 123 123 % 10 = 3 123 / 10 = 12 12 % 10 = 2 12 / 10 = 1 1 % 10 = 1 1 / 10 = 0 结束 循环不变式 x%10 x=x/10 循环结束条件 x==0 scanf( “%d”, x); while (x != 0){ digit = x %10; x = x/10 ; printf( %d , digit); } 用do-while实现? 例4-9 求500以内的全部素数,每行输出10个 for (m = 2; m = 500; m++) if (m是素数) printf( %d, m); n = sqrt(m); for(i = 2; i = n; i++) if(m % i == 0) break; if(i n) printf(yes\n); else printf(no\n”); for (m = 2; m = 500; m++){ n=sqrt(m); for(i = 2; i = n; i++) if(m % i == 0) break; if(i n) printf(%d, m); } 例4-9 源程序 #include stdio.h #include math.h int main(void) { int count, i, m, n; count = 0; for (m = 2; m = 500; m++){ n = sqrt(m); for (i = 2; i = n; i++) if(m % i == 0) break; if(i n){ /* 如果m是素数 */ printf(%6d, m); count++; if (count %10 == 0) printf(“\n”); } } } 例4-10 求Fibonacci序列:1,1,2,3,5,8,13,… 1, 1, 2, 3, 5, 8, 13, …… x1 x2 x x1 x2 x x1 = x2 = 1; x = x1 + x2; x1 = x2; x2 = x; x1 = 1; x2 = 1; printf (%6d%6d, x1, x2 ); /* 输出头两项 */ for (i = 1; i = 8; i++){ /* 循环输出后8项 */ x = x1 + x2; /* 计算新项 */ printf(%6d, x); x1 = x2; /* 更新x1和x2 */ x2 = x; } * 例4-11古典算术问题-搬砖头 某地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬一块。 问用45人正好搬45块砖,有多少种搬法? for (men = 0; men = 45; men++) for (women = 0; women = 45; women++) for (child = 0; child = 45; child++) if ((men+women+child==45) (men*3+women*2+child*0.5==45)) printf(men=%d women=%d child=%d\n, men, women, child); } * 例4-11 源程序(2) for (men = 0; men = 15; men++) for (women = 0; women = 22; women++){ child = 45 – women – men;
文档评论(0)