编写程序完成输入年份和月份,计算指定年份中某月的天数。
时间: 2024-09-14 08:14:02 浏览: 101
编写程序来计算给定年份和月份的天数通常涉及到判断是否为闰年以及考虑每个月的天数规则。以下是Python的一个简单示例:
```python
def is_leap_year(year):
if year % 4 == 0:
if year % 100 != 0 or (year % 400 == 0):
return True
return False
def days_in_month(year, month):
# 一年12个月的天数
months_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 如果是闰年,并且是2月,则增加一天
if is_leap_year(year) and month == 2:
months_days[1] = 29
else:
months_days[1] = 28
return months_days[month - 1]
# 用户输入
year = int(input("请输入年份: "))
month = int(input("请输入月份(1-12): "))
# 计算并打印结果
days = days_in_month(year, month)
print(f"{year}年的{month}月有{days}天.")
相关问题
编写程序完成输入年份和月份,计算该月份的天数(注意闰年)。(要求要有闰年及非闰年的测试用例java)
编写一个Java程序来计算给定月份的天数,包括处理闰年的情况,你可以使用`java.util.Calendar`类,它提供了对日期和时间的管理功能。以下是简单的代码示例:
```java
import java.util.Calendar;
public class MonthDaysCalculator {
public static void main(String[] args) {
// 测试用例一:非闰年,2月(28天)
calculateMonthDays(2021, Calendar.FEBRUARY);
// 测试用例二:闰年,2月(29天)
calculateMonthDays(2020, Calendar.FEBRUARY);
// 测试用例三:闰年,4月(30天)
calculateMonthDays(2020, Calendar.APRIL);
}
public static int calculateMonthDays(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1); // 减1是因为月份从0开始计数,所以二月对应的是Calendar.JANUARY
if (isLeapYear(year)) { // 判断是否为闰年
calendar.add(Calendar.MONTH, 1); // 提前一个月到下个月第一天,如果之前是2月,则会自动加一天,即判断是否为闰年
}
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}
```
在这个程序中,`calculateMonthDays`函数接收年份和月份作为参数,然后通过`Calendar`类获取指定月份的第一天,并根据是否是闰年调整。如果是闰年,会先将当前月份加1然后再获取实际最大天数;如果不是闰年,直接获取原月份的最大天数即可。
运行这个程序,你会看到不同情况下的天数结果。关于`
任务描述 编写程序完成输入年份和月份,计算该月份的天数(注意闰年)。 测试说明 请注意输入的年月是否合法,如年份为负数或月份不在1--12之间,请给出相应提示: 年份非法. 月份非法.
为了编写这样的程序,你可以使用Python语言,因为它的日期处理模块`datetime`非常方便。下面是一个简单的函数,用于计算给定年份和月份的天数,考虑了闰年的规则:
```python
from datetime import datetime
def calculate_days(year, month):
try:
# 尝试创建一个datetime对象
date = datetime(year, month, 1)
# 获取月份的第一天
first_day_of_month = date.replace(day=1)
# 返回该月的天数
days_in_month = first_day_of_month.month
if first_day_of_month.year % 4 == 0 and (first_day_of_month.year % 100 != 0 or first_day_of_month.year % 400 == 0): # 判断是否是闰年
if month in [1, 3, 5, 7, 8, 10, 12]: # 闰年的2月有29天
days_in_month += 1
return days_in_month
except ValueError as e:
if str(e).startswith('month must be in'):
print("月份非法.")
elif str(e).startswith('year must be'):
print("年份非法.")
else:
raise e
# 测试示例
print(calculate_days(2024, 2)) # 输出:29
print(calculate_days(-2024, 2)) # 输出:年份非法.
print(calculate_days(2024, 13)) # 输出:月份非法.
```
这个函数首先尝试创建一个指定年月的日历日期,如果输入非法(比如月份不在1-12范围内或年份是负数),`datetime`库会抛出异常,我们捕获这些异常并提供相应的错误提示。
阅读全文