JavaScript网页特效-“渔夫打鱼晒网”程序设计
程序设计时,把可能需要反复执行的代码封装为函数,然后在需要执行该段代码功能的地方进行调用,这样不仅可以实现代码的复用,更重要的是可以保证代码的一致性,只需要修改该函数代码,则所有调用位置均得到体现。同时,把大任务拆分成多个函数也是“分治法”和“模块化程序设计”的基本思路,这样有利于复杂问题简单化。本节使用自定义函数,实现“渔夫打鱼晒网”程序设计。
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网页特效-“渔夫打鱼晒网”程序设计相关推荐
- java捕鱼设计_java实现渔夫打鱼晒网
package com.example.demo.sample; import java.util.Scanner; /** * Desc :如果一个渔夫从 2015 年 1 月 1 日开始每三天打一 ...
- C语言试题七十七之请编写函实现渔夫打鱼晒网问题
- 《JavaScript网页特效经典300例》
<JavaScript网页特效经典300例> 基本信息 作者: 杨磊 张志美 丛书名: 百炼成钢系列丛书 出版社:电子工业出版社 ISBN:9787121220524 上架时间:20 ...
- php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...
使用javascript实现雪花飘落的效果 看了javascript网页特效实例大全中的图片飘下的效果实例,觉得值得动手学习下. 就把图片改成雪花图,完成一个雪花飘下的效果. 并且,其中有些内容比较陈 ...
- JavaScript网页特效-限时秒杀
限时秒杀是网络商家在某一预定的时间里,大幅度降低活动商品的价格,买家只要在这个时间里成功拍得此商品,便可以用超低的价格买到原本很昂贵的物品的一种营销活动.限时秒杀短时效的限定会给予用户更强烈的紧迫感, ...
- JavaScript网页特效-“扫雷”游戏随机布雷功能
"扫雷"游戏是一款经典益智小游戏.游戏目标是在最短的时间内找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输.本节介绍"扫雷"游戏随机布雷功能的设计与实现. ...
- JavaScript网页特效-浮现社会主义核心价值观文字动画效果
1.案例呈现 用户在页面单击鼠标左键,页面浮现"富强"."民主"."文明"."和谐"."自由".&q ...
- python练习, 打鱼晒网问题
如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网. import time # 判断是 ...
- C语言练习题 打鱼晒网问题
题目: 一个渔夫从2011年1月1日起每三天打一次鱼,两天晒一次网,编程实现输入2011年1月1日后任意一天,输出当天是在打鱼还是晒网. 代码: #include <stdio.h> #i ...
最新文章
- 程序员的量化交易(34)--QuantConnect_Lean如何定义Indicator指标2
- android的dmtracedump工具生成trace文件图片 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- docker新增目录映射_开发也需了解的运维知识之Docker
- qtcreator下拉列表怎么制作_设置EXCEL动态下拉菜单,只需要一个组合键,新手也能快速掌握...
- Pytorch: model.eval(), model.train() 讲解
- ELK 6.2版本部署
- python - 增强的格式化字符串format函数
- Win + Appium + Android/IOS + Python环境搭建
- x264源代码简单分析:宏块分析(Analysis)部分-帧间宏块(Inter)
- matlab参数方程求导 求不定积分
- 皮尔逊相关系数,斯皮尔曼等级相关系数,(易错!!)假设检验 ,SPSS
- Typora设置图片的题注(标题)
- 40个布局排版好看的网页设计作品
- 发现目录启用了自动目录列表功能apache如何设置。【解决方案】
- There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED]
- 互联网巨头追捧的“中台”战略,有多重要?
- KMP(字符串匹配)+字符串哈希
- solidworks宏按钮的制作
- 使用@Aspect不起作用
- windows安装IIS不成功的原因