- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
创建一个程序显示给定日期的月历
问题 创建一个程序显示给定日期的月历。 既程序提示用户输入年和月,然后显示该月的日历。 思考1 把问题分解为两个子问题:读取用户输入(readInput)和打印日历(printMonth) 在这一步,我们思考的是怎样分解子问题而不是用什么方法输入数据和打印日历,可以画一个结构图把问题的分解表达出来。 思考2 要打印一个月的日历,应当知道这个月的第一天是星期几以及该月有几天,有了这些信息就可以打印日历的标题和主体了。因此,打印月历问题进一步可以分解成四个子问题:得到第一天对应的星期(getStartDay),求得这个月的天数(getNumOfDaysInMonth),打印标题(printMonthTitle),打印月历主体(printMonthBody)。 思考3 怎样知道一个月的第一天是星期几呢? 有几种方法可以求得(如使用java中的Date和Calendar类)。我们采用另外一种方法:假设知道1800年1月1日是星期三(startDay1800=3),计算1800年1月1日和该月第一天相差的总天数(totalNumOfDays),该月第一天的星期就是(totalNumOfDays+startDay1800)%7。 想要计算1800年1月1日和月历第一天之间的总天数,需要求出1800年到该年的天数,并求出在该年中日历前的天数。这两个数相加就是totalNumOfDays。 为了计算这个天数还需要知道一年和一个月的天数。算法: 一月、三月、五月、七月、八月、十月和十二月各31天 四月、六月、九月和十一月各30天 二月通常有28天,但是在闰年有29天,因此一年通常有365天,闰年366天。 利用下面的条件可以判定某年是否 为闰年: if((year % 400 == 0) || (( year % 4 == 0) ( year % 100 != 0))) return true; else return false。 我们把判断是否是润年的工作也放在一个子问题中解决(isLeapYear)。 把计算总天数的工作放在子问题getTotalNumOfDays中。 完整的结构化分 * 打印日历系统 readInput子系统 printMonth子系统 打印日历系统 readInput子系统 printMonth子系统 getStartDay getNumOfDaysInMonth printMonthTitle printMonthBody 打印日历系统 readInput子系统 printMonth子系统 getStartDay getNumOfDaysInMonth printMonthTitle printMonthBody getTotalNumOfDays isLeapYear *
文档评论(0)