第三次作业解析

第三次作业解析
第三次作业解析

21.【小学生】根据日期求星期

这道题开始考察我们如何设计一个算法了,这也是编程的精髓所在:逻辑严谨的思维,所以,这道题我们要充分调用我们所学的知识与思维来设计一个可用的算法让我们先理清思路:

我们的目的要编写一个,输入一个日期,给出这个日期是星期几的程序,由于题目中告诉了我们输入的数据不会早于1900年,所以我们不妨这样考虑:通过查资料,我们得知1900年1月1日恰巧是星期一,所以我们可以让用户输入一个日期,计算这个日期与1900年1月1日之间差了多少天,然后用这个天数去除以7,这样用户输入的日期是星期几就显而易见了。

关于“输入的日期与1900年1月1日之间差了多少天”,应当很容易的想到,输入的日期与1900年1月1日相差的天数,其实就是输入的日期与公元1年1月1日相差的天数,和1900年与公元1年1月1日相差的天数,二者之差,那么我们分别计算两者再做差即可得出结果。

如何计算呢?暂且不考虑历史原因导致的历法变更,只需计算:年份*365+年份/4(闰年的年数)-年份/100(逢百减闰的年数)+年份/400(逢四百加闰的年数)+(经过的月份中包含的天数)+日期.可得出结果,然后将结果模7即可。

关于给出时间计算日期还有一个简洁明了的公式:蔡勒公式,可供参考:

w = (d + 1+ 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;

22.【小学生】找出最大素数

根据素数的定义,可以通过从大到小枚举数字,挨个判断是否是素数,直到找到素数并将之输出。

另介绍一种算法:埃氏筛法,该方法可以得出从零至某数其间所有的素数,原理是从小到大枚举所有数字,该数的所有倍数可确认为非素数,将其划掉。直到枚举到该范围,此时所有没有被划掉的数字可以确认为素数。此方法常常用于查找一个范围内的所有素数。

23.【入门】输出你的第一个图形

答案题目中已给出,照抄即可,下面给出一种运用双重循环输出的方法,此方法可以指定长方形的长,宽。

另请思考,运用此种方法,能否输出等腰三角形,直角三角形,菱形,如果可以,应该为循环给定什么值?

24.【小学五年级】再算星期

该题可以借用21题的思路,需要新写的是一个判断环节,关于这个判断也不困难,先判断输入的月份是否在12以内,再判断这个月份有没有这个日期即可,闰年也要考虑到。

特别提示:如果你卡在了第九个测试点,请认真检查你关于月份判断的语句,真的包括了所有条件了吗?

25.【小学五年级】确定母亲节

依然套用21题的计算日期的程序,计算所输入年份的5月1日是星期几,然后用15减去这个数即可,如果这天本身就是周日,输出8.

26.【小学四年级】贪吃的猴子

递推公式很好建立,运用一个倒循环倒推即可解决。

具体操作方法是从n-1开始,每次循环ans加上i然后乘以2.

编完程序才发现这题踏马有个彩蛋:桃子只有1个的时候,不需要在peach后加es,这是考察我英语水平嘛?

相关主题
相关文档
最新文档