这是我个人对这个题目理解,可能有些杂乱,仅供参考。
题目:
编写程序,提示用户输入年份和代表该年第一天是星期几的数字,然后在控制台上显示该年的日历表。
控制台显示结果如下:(我用_代表空格)
首先,说一下我认为在做这道题之前需要想到的几个要点:
1,首先,要判断输入的年份是平年还是闰年,判断闰年的条件是能被4整除且不能被100整除,或能 被400整除
这里,我写了一个单独的函数用来表示
2,第二,判断完平年还是闰年之后,还需要得出每月的天数,需要注意,2月的天数和平年闰年有关系
这里我使用的是switch语句,也可以使用循环等获取天数,2月的天数调用了前面判断是否为闰年的方法
3,最后,在知道每个月的天数后,需要知道这个月的第一天从星期几开始,这时就需要获取每个月开始的星期数:(上个月的天数%7+上个月第一天的星期数)%7
这里第一个月的星期数是由用户手动输入获取的,所以,第一个月的星期数,就是他本身,第二个月的星期数是前面一个月,也就是第一个月的星期数,用递归调用比较方便
当我写到这里的时候,我还没考虑7天换行的问题,就只是看能不能在正确的位置输出每个月的一号,于是开始写main函数
此处,kl为我的类名,(注:类名首字母要大写,不要像我一样小写),_代替空格
通过运行后,得出下图所示的结果:
说实话,看到这个结果,着实吓了一跳,随即,我就发现,我没写换行,但是每个月的第一天所在星期数是正确的,还是窃喜了一小下
接下来就开始换行的操作
换行的话,就是每到周六就换行,Sun对应的值是0,Sat对应的是6,也就是说,要判断当days为6时换行,就是判断days为星期几,我的思路是,当天的日期加上这个月开始的星期数余7就是当前日期的星期数,但是要注意,这个月开始的星期数是从0开始的,所以,总的来说:
当前日期的星期数= (当前日期+这个月开始的星期数-1)%7
判断完当前天数之后,就要在main函数里使用了,使用要
判断当前天数是否为周6,进行换行:
将以下语句放在图5的红线出即可,在if条件里调用dWeak函数
这样就可以了,运行结果后,就会出现图1的样式
以上,是我在写完之后的一些理解,如果有更好的方式欢迎告知(^w^)
最后,用一张图片结束吧