网站大量收购独家精品文档,联系QQ:2885784924

C++编程数据组织1-数组-1.pptVIP

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
任务一的解题思路: 假定A、B、C、D、E 五人的编号分别为1、2、3、4、5,整数数组 fish[k] 表示第 k 个人所看到的鱼数。fish[1] 表示A所看到的鱼数,fish[2] 表示 B 所看到的鱼数…… fish[1] A所看到的鱼数,合伙捕到鱼的总数 fish[2] = (fish[1] - 1) * 4 / 5 B所看到的鱼数 fish[3] = (fish[2] - 1) * 4 / 5 C所看到的鱼数 fish[4] = (fish[3] - 1) * 4 / 5 D所看到的鱼数 fish[5] = (fish[4] - 1) * 4 / 5 E所看到的鱼数 * 写成一般式 fish [ i ] = ( fish [ i - 1 ] – 1 ) * 4 / 5 i = 2, 3, …,5 这个公式可用于已知 A 看到的鱼数去推算 B 看到的,再推算 C 看到的,…….。现在要求的是 A 看到的。能否倒过来,先知 E 看到的再反推 D 看到的,……,直到A看到的。为此将上式改写为: fish[ i-1 ] = fish[ i ] * 5 / 4 +1 i = 5, 4,…,2 * 分析上式 1. 当 i = 5 时,fish[ i ] 表示 E 醒来所看到的鱼数,该数应满足被5整除后余1,所以初值设为1+5 2. 当 i = 5 时,fish[ i-1 ] 表示 D 醒来所看到的鱼数,这个数要满足 fish[ 4 ] = fish[ 5 ] * 5 / 4 + 1 显然,fish[ 4 ] 必须是整数,所以fish[5]必须满足 fish[ 5 ] % 4 == 0 这个结论同样可以用至 fish[ 3 ], fish[ 2 ] 和 fish[ 1 ] * 3 . 按题意要求 5 人合伙捕到的最少鱼数,可以从小往大枚举,即: 可以先让 E 所看到的鱼数最少为 6 条,即 fish[ 5 ] 初始化为 6 来试,之后每次增加 5 再试,直至递推到 fish[ 1 ] ,均为整数。 根据上述思路,我们可以构思如下的程序框图: * fish[5]=fish[5]+5; for (i=4; i=1; i--) fish[i+1]%4 !=0 true fales break; fish[i]=1+ fish[i+1]*5/4; do while( i= 1) 定义数组并初始化 输出计算结果 * 上图的说明: 该图可分为三部分 (1) 是说明部分:包含定义数组 fish[6],并初始化为 1 和定义循环控制变量 i,并初始化为 0。 (2) 是 do….while 直到型循环,其循环体又含两块: (2.1) 是枚举过程中的 fish[5] 的初值设置,一开始 fish[5]=1+5; 以后每次增 5。 (2.2) 是一个 for 循环,i的初值为 4,终值为 1,步长为 -1,该循环的循环体是一个分支语句,如果 fish[i+1]不能被 4 整除,则跳出 for 循环(使用 break 语句;)否则,从 fish[i+1] 算出fish[i]。 * 当 break 语句让程序退出循环时,意味着某人看到的鱼数不是整数,当然不是所求,必须令fish[ 5 ] 加 5 后再试,即重新进入直到型循环 do while 的循环体。 当正常退出 for 循环时,一定是控制变量 i 从初值 4,一步一步执行到终值 1,每一步的鱼数均为整数,最后 i = 0,表示计算完毕,且也达到了退出直到型循环的条件。 (3) 输出计算结果 * #include iostream using namespace std; int main() { int fish[6]={1,1,1,1,1,1}; // 记录每人醒来后看到的鱼数 int i=0; do { fish[5]=fish[5]+5; // 让E看到的鱼数增5。 for (i=4; i=1; i--) { if ( fish[i+1]%4 !=0 ) break; // 跳出for循环 else fish[i]=fish[i+1]*5/4+1; // 计算第i人看到的鱼数 } } while( i=1 );

文档评论(0)

peace0308 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档