程序设计时,把可能需要反复执行的代码封装为函数,然后在需要执行该段代码功能的地方进行调用,这样不仅可以实现代码的复用,更重要的是可以保证代码的一致性,只需要修改该函数代码,则所有调用位置均得到体现。同时,把大任务拆分成多个函数也是“分治法”和“模块化程序设计”的基本思路,这样有利于复杂问题简单化。本节使用自定义函数,实现“渔夫打鱼晒网”程序设计。

1案例呈现

若某渔夫从当年1月1日起开始“三天打渔两天晒网”,编程实现输入当年的某一天,输出该渔夫是在“打渔”还是在“晒网”。案例输入输出效果,如图4-10所示。

图4-10案例输入输出效果

2案例分析

案例中从当年1月1日起开始“三天打渔两天晒网”,则当年1月1号、2号和3号在打渔,1月4号和5号在晒网,依此类推。首先计算出,用户输入日期是这一年中的第几天,由于“打渔”和“晒网”的周期为5天,将计算出的天数对5取余数,若余数为1,2,3,则他是在“打渔”,否则是在“晒网”。根据分析,算法设计分为三步。

(1)计算输入日期是当年的第几天,若当年是闰年且输入月份大于2份,则需要多加一天。

(2)将计算出的天数对5取余数。

(3)根据余数判断渔夫是在“打渔”还是在“晒网”;若余数为1,2,3,则渔夫是在“打渔”,否则是在“晒网”。

为简化代码,程序中自定义两个函数,实现判断闰年和计算输入日期是当年的第几天的功能,然后在程序中调用。

3案例实现

  1  <!DOCTYPE html>2  <html lang="en">3  <head>4  </head>5  <body>6   </script>7         function isLeap(year) { // 判断是否闰年8             if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {9                 return true;10             }11             return false;12         }13         function getDays(year, month, day) {// 计算计算输入日期是当年的第几天14             var arr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];//月份15             for (var i = 0; i < month - 1; i++) {// for循环让前面月份天数相加。16                 day += arr[i];17             }18             if (isLeap(year) && month > 2) {// 调用函数19                 day++;20             }21             return day;22         }23         var year = prompt("请输入年");24         var month = prompt("请输入月");25         var day = prompt("请输入日");26         var n = getDays(year, month, day); // 调用函数27         if ((n % 5) < 4 && (n % 5) > 0) // 余数是1或2或3时说明在打渔,否则在晒网28             alert(year + "年" + month + "月" + day + "日渔夫在打渔");29         else30             alert(year + "年" + month + "月" + day + "日渔夫在晒网");31     </script>32   </body>33  </html>

案例代码中,第7行代码定义函数isLeap(year),它判断参数年份是否是闰年;第13行代码定义函数getDays(year, month, day),它调用isLeap(year)计算输入日期是当年的第几天;第26行代码调用getDays(year, month, day)函数获得输入日期是当年的第几天;第27-30行代码将获得的天数对5取余数,根据余数判断渔夫是在“打渔”还是在“晒网”,并弹窗显示相应结果信息。


视频讲解:JavaScript网页特效-“渔夫打鱼晒网”程序设计_哔哩哔哩_bilibili

源码:清华大学出版社-图书详情-《JavaScript前端开发与实例教程(微课视频版)》

JavaScript网页特效-“渔夫打鱼晒网”程序设计相关推荐

  1. java捕鱼设计_java实现渔夫打鱼晒网

    package com.example.demo.sample; import java.util.Scanner; /** * Desc :如果一个渔夫从 2015 年 1 月 1 日开始每三天打一 ...

  2. C语言试题七十七之请编写函实现渔夫打鱼晒网问题

  3. 《JavaScript网页特效经典300例》

    <JavaScript网页特效经典300例> 基本信息 作者: 杨磊    张志美 丛书名: 百炼成钢系列丛书 出版社:电子工业出版社 ISBN:9787121220524 上架时间:20 ...

  4. php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...

    使用javascript实现雪花飘落的效果 看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈 ...

  5. JavaScript网页特效-限时秒杀

    限时秒杀是网络商家在某一预定的时间里,大幅度降低活动商品的价格,买家只要在这个时间里成功拍得此商品,便可以用超低的价格买到原本很昂贵的物品的一种营销活动.限时秒杀短时效的限定会给予用户更强烈的紧迫感, ...

  6. JavaScript网页特效-“扫雷”游戏随机布雷功能

    "扫雷"游戏是一款经典益智小游戏.游戏目标是在最短的时间内找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输.本节介绍"扫雷"游戏随机布雷功能的设计与实现. ...

  7. JavaScript网页特效-浮现社会主义核心价值观文字动画效果

    1.案例呈现 用户在页面单击鼠标左键,页面浮现"富强"."民主"."文明"."和谐"."自由".&q ...

  8. python练习, 打鱼晒网问题

    如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网. import time # 判断是 ...

  9. C语言练习题 打鱼晒网问题

    题目: 一个渔夫从2011年1月1日起每三天打一次鱼,两天晒一次网,编程实现输入2011年1月1日后任意一天,输出当天是在打鱼还是晒网. 代码: #include <stdio.h> #i ...

最新文章

  1. 程序员的量化交易(34)--QuantConnect_Lean如何定义Indicator指标2
  2. android的dmtracedump工具生成trace文件图片 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  3. docker新增目录映射_开发也需了解的运维知识之Docker
  4. qtcreator下拉列表怎么制作_设置EXCEL动态下拉菜单,只需要一个组合键,新手也能快速掌握...
  5. Pytorch: model.eval(), model.train() 讲解
  6. ELK 6.2版本部署
  7. python - 增强的格式化字符串format函数
  8. Win + Appium + Android/IOS + Python环境搭建
  9. x264源代码简单分析:宏块分析(Analysis)部分-帧间宏块(Inter)
  10. matlab参数方程求导 求不定积分
  11. 皮尔逊相关系数,斯皮尔曼等级相关系数,(易错!!)假设检验 ,SPSS
  12. Typora设置图片的题注(标题)
  13. 40个布局排版好看的网页设计作品
  14. 发现目录启用了自动目录列表功能apache如何设置。【解决方案】
  15. There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED]
  16. 互联网巨头追捧的“中台”战略,有多重要?
  17. KMP(字符串匹配)+字符串哈希
  18. solidworks宏按钮的制作
  19. 使用@Aspect不起作用
  20. windows安装IIS不成功的原因

热门文章

  1. 数学建模常用模型07 :模糊综合评价法
  2. [例说NLP]使用gensim处理wiki百科中文数据
  3. 科技型中小企业的申报流程及材料?
  4. 记-微服务CPU100%排查之windows版
  5. 对话《深入理解Java虚拟机》作者周志明:电竞选手成为Java大神之路
  6. 理解不变因子、行列式因子、初等因子
  7. Matlab论文插图绘制模板第32期—等高线图(contour)
  8. github-email:通过github帐号查某人可能的邮箱
  9. 例说hg(四)———— 杂说hg使用场景
  10. 必应精美壁纸一键全部下载