I am a teacher!

导航

习题解析之:本月天数

【问题描述】
输入一个8位数表示的年月日,读出月份数字并输出该月有多少天。

输入格式
输入一个8位的表示年月日的字符串

输出格式
该月的天数

示例
输入:
20000219
输出:
29

【编程思路1】

        首先编写闰年判断函数。能被 4 整除且不能被 100 整除的年份是闰年,能够被 400 整除的年份也是闰年。

        对于输入的8位表示年月日的字符串 date_str,前 4 位表示年份,第 4 位和第 5 位表示月份。用字符串切分后转换成整数可得到年份和月份。具体语句为:

        year = int(date_str[0:4])
        month = int(date_str[4:6])
        得到年份和月份后,根据月份分三种情况进行处理:
        月份为大月,即1 月、3 月、5 月、7 月、8 月、10 月或 12 月,该月有 31 天;
        月份为小月,即 4 月、6 月、9 月或 11 月,该月有 30 天;
        月份为 2 月,再根据是否为闰年确定该月天数,闰年 29 天,非闰年 28 天。
        用分支结构进行处理,编写源程序如下:

        image

【编程思路2】

        由于每年 12 个月的天数是固定的,因此可以用一个列表 table 来保存一年中各月的天数。如下:

        table = [0,31,28,31,30,31,30,31,31,30,31,30,31]

        其中 table[i] 表示第 i 月的天数。表中 2 月份的初始天数设置为 28 天,若所输入的年份为闰年,则修改 table[2] = 29。

        得到了输入日期的年year、月month 后,table列表中的 table[month] 元素值即是 month 月的天数。

        按这一思路编写源程序如下: 

        image

posted on 2025-11-13 10:42  aTeacher  阅读(0)  评论(0)    收藏  举报