5.6 函数应用
2025年09月21日
5.6 函数应用
【案例5-5】 日历的输出。
通过输出年份和月份,显示出指定月份的日历。运行效果如图5-4所示。
图5-4 日历效果图
案例分析:
①想要显示日历,首先要知道是哪一年,而年份又分为闰年和平年。通过一个函数来实现闰年的判断。当年份能被4整除且不能被100整除和能被400整除时为闰年,其余为平年。定义函数的返回值:闰年返回True,平年返回False。
②需要知道当前月有几天。通过定义函数获取每个月的天数。闰年时,2月为29天;平年时,2月为28天。其他月份中1月、3月、5月、7月、9月、10月、12月为31天,4月、6月、9月、11月为30天。
③确定一个起始的参考年份,如1990年,当前年的1月1日为星期一。定义一个函数,获取指定年、月到参考年、月的总天数,以确定每个月的1日是星期几。设定天数初值为0,如果当年为闰年,天数加366天,为平年,天数加365天。再加上当前年从1月到指定月份的天数。
④在主函数中先输入年份和月份,再调用函数。由于要将日期按星期进行排列,一周为7天,需定义一个计数器,初值为0,用来控制输出换行,当数值能被7整除时则换行。
⑤再确定日历的输出顺序,必须先确定1日的星期位置。如果将星期一排在第一个,则直接用总天数对7整除取余数(total_days(year,month)%7)。如果将星期日排在第一个输出,则将总天数加1再对7整除取余数((total_days(year,month)+1)%7)。1日之前的星期位置需要空出来,所以就直接输出间隔符,每输出一个间隔符,都需要对计数器加1。
⑥最后从1日按序输出日期,每输出一个日期,计数器就加1,当计数器的值能被7整除时,则换行。
日历设计程序图如图5-5所示。
图5-5 日历设计程序图