第四章循环结构程序设计2讲述.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章循环结构程序设计2讲述

课后练习(1)-累加 国王的许诺。相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜欢象棋,决定让宰相自己选择何种赏赐。 这位聪明的宰相指着8×8共64格的象棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第一个格子中放1粒,第2格中放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上的64个格子,我就感恩不尽了。 舍罕王让人扛来一袋麦子,他要兑现他的许诺。 国王能兑现他的许诺吗?试编程计算舍罕王共要多少麦子赏赐他的宰相,这些麦子合多少立方米? (已知1立方米麦子约1.42e8粒) 总粒数为:sum=1+2+22+23+…+263 方法1 #include stdio.h #include math.h #define CONST 1.42e8 void main() { int n; double term, sum = 0; /*累加求和变量赋初值*/ for (n=1; n=64; n++) { term = pow(2, n-1); /*根据累加项的规律计算累加项 */ sum = sum + term; /*作累加运算*/ } printf(sum = %e\n, sum); /*打印总麦粒数*/ printf(volum = %e\n, sum/CONST);/*打印折合的总麦粒体积数*/ } 方法2 #include stdio.h #define CONST 1.42e8 /*定义符号常量CONST值为1.42e8 */ void main() { int n; double term = 1, sum = 1; /*累乘求积、累加求和变量赋初值*/ for (n=2; n=64; n++) { term = term * 2; /*根据后项总是前项的2倍计算累加项*/ sum = sum + term; /*作累加运算*/ } printf(sum = %e\n, sum); /*打印总麦粒数*/ printf(volum = %e\n, sum/CONST); /*打印折合的总麦粒体积数*/ } 课后练习(2)-穷举法 马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人? 解方程组 穷举法 方法1:采用三重循环穷举x,y,z的全部可能的组合 #include stdio.h main() { int x,y,z; printf(Man \t Women \t Childern\n); for (x=0; x=30; x++) for (y=0; y=30; y++) for (z=0; z=30; z++) if (x+y+z==30 3*x+2*y+z==50) printf(%3d \t %5d \t %8d\n,x,y,z); } 方法2:改进算法 #include stdio.h void main() { int x,y,z; printf(Man \t Women \t Childern\n); for (x=0; x=16; x++) for (y=0; y=25; y++) { z = 30 – x - y; if (3 * x + 2 * y + z == 50) printf(%3d \t %5d \t %8d\n,x,y,z); } } * 分析问题,找出规律。 每次迭加的数为f×f1/f2,分析其初始值及变化状况。 * 分析问题,找出规律。 每次迭加的数为f×f1/f2,分析其初始值及变化状况。 * 复习与拓展 求1!+2!+3!+……+n! void factorial( ) { double sum = 0, term = 1; int i, n; scanf (“%d”, n); for (i = 1; i = n; i++) { term = term *i; sum = sum + term; } printf(“1!+2!+

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档