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

综合实例分析 内容 循环、数组等的综合应用 常见算法 * 【例1】给出日期 y、m、d,计算该日期是该年的第几天? 算法分析: 对于 1 至 m-1 月进行整月天数计算,每月的天数不相同,需要用条件语句判断; 对于 m 月,按实际天数 d 计算; 算法 begin read ( y, m, d ); k←1, s←0 while k= m-1 do begin case k of case 1,3,5,7,8,10,12: s←s+31 case 2: if (leap(y)=1) then s←s+29 else s←s+28 case 4,6,9,11 :s←s+30 end k ← k+1 end s ← s+d write(y,年,m,月,d,日是第,s,天) end 我们居住的地球总是绕着太阳旋转的。地球绕太阳转一圈需要365天5时48分46秒。我们把这一段长度称为“回归年”。为了使用方便,我们将365天作为公历平年的一年。这样平均每年要多出5小时48分46秒,累积4年就有23小时15分4秒,几乎接近一天的时间;如果累积400年,就会多出97天来,久而久之会出现寒暑颠倒,历法会失去实用价值。怎么办呢?唯一的办法是设置某一年为闰年,每逢闰年的就比平年增加一天,成为366天。这样经过3333年才有一天的误差。 背景知识 经过研究对公历的闰年设置作出这样的规定:凡非整百的公元纪年年数能被 4 整除的定为闰年;而整百的公元年份要能被400 整除的才能定为闰年。这样每 400 年中刚巧是97 个闰年,这样的做法可在 400 年中减少 3 个闰年。 闰年算法 function leap(y) begin result ← 0 if (y mod 400 = 0 ) then result ← 1 if ((y mod 4=0) and (y mod 100 0)) then result ← 1 return( result ) end 闰年算法变化 function leap(y) begin result ← 0 if (y mod 400 = 0 ) or ((y mod 4=0) and (y mod 100 0)) then result ← 1 return( result ) end (y mod 400 = 0 ) or ((y mod 4=0) and (y mod 100 0)) 【例2】用“起泡排序法”对10个数排序(由小到大)(Bubble sort) 。 算法思想:将相邻的两个数比较,将小的调到前头。 方法: 设有 n 个数要求从小到大排序,“起泡排序法”的排序过程分为如下 n-1 趟: 对于“9,8,5,4,2,0”排序过程示意如下: 9 0 2 4 5 8 0 9 2 4 5 8 0 2 9 4 5 8 0 2 4 9 5 8 0 2 4 5 9 8 0 2 4 5 8 9 9 8 0 2 4 5 9 0 8 2 4 5 9 0 2 8 4 5 9 0 2 4 8 5 9 0 2 4 5 8 9 8 5 0 2 4 9 8 0 5 2 4 9 8 0 2 5 4 9 8 0 2 4 5 9 8 5 4 0 2 9 8 5 0 4 2 9 8 5 0 2 4 9 8 5 4 2 0 9 8 5 4 0 2 第1趟 第2趟 第3趟 第4趟 第5趟 第1趟:把元素1..n从上到下,相邻两数比较,小者前调。依次执行 n-1 次,最大数冒到a[n]中。 第2趟:把元素1..n-1从上到下,相邻两数比较,小者前调。依次执行 n-2 次,次大数冒到a[n-1]中。 … 第i趟:把元素1..n-(i-1)从上到下,相邻两数比较,小者前调。依次执行 n-i 次,第i大的数冒到a[n-(i-1)]中。 … 第n-1趟:把元素1..2从上到下,相邻两数比较,小者前调。执行 1 次,次小数冒到a[2]中,a[1]是最小的数,所有的数排好序,排序结束。 for i←1 to n-1 step 1 do // 控制第i趟 把元素 1..n-(i-1) 从上到下,相邻两数比较,小者前调。 依次执行 n-i 次,第 i 大的数冒到 a[n-(i-1)] 中。 把元素 1..n-(i-1) 从上到下,相邻两数比较,小者前调。 依次执行 n-i 次,第 i 大的数冒到 a[n-(i-1)]中。 a[1] 与 a[2] 比较,如果 a[1] 比 a[2] 大,则交换,使得 a[2] 是已经比较过的元素中的最大值。 a[2] 与 a[

文档评论(0)

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

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

1亿VIP精品文档

相关文档