C语言:计算闰年月份天数(附代码)
一、问题分析与原理
计算月份天数的核心逻辑需解决两点:
-
闰年判断
根据格里高利历规则:- 能被4整除但不能被100整除的年份 是闰年(如2024)
- 能被400整除的年份 也是闰年(如2000)
- 其他情况为平年
公式:(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
-
月份天数规则
- 31天:1月、3月、5月、7月、8月、10月、12月
- 30天:4月、6月、9月、11月
- 2月:闰年29天,平年28天
二、VS2019环境准备
创建C语言项目步骤:
- 新建项目
- 打开VS2019 → 选择“创建新项目” → 搜索“空项目”模板 → 设置名称(如
MonthDays
)和存储路径
- 打开VS2019 → 选择“创建新项目” → 搜索“空项目”模板 → 设置名称(如
- 添加源文件
- 右键“解决方案资源管理器”中的“源文件” → 选择“添加 → 新建项” → 命名文件为
main.c
(扩展名必须为.c
)
- 右键“解决方案资源管理器”中的“源文件” → 选择“添加 → 新建项” → 命名文件为
- 配置编译器(首次使用时)
- 若报错“找不到stdio.h”,需安装C/C++开发组件:通过“工具 → 获取工具和功能” → 勾选“使用C++的桌面开发”
三、代码实现(两种方法)
方法1:数组存储法(推荐)
用数组存储各月默认天数,对闰年2月特殊处理
方法2:Switch语句法
通过switch
分支处理不同月份
两种方法对比
- 数组法:代码简洁,便于扩展(如增加月份校验)
- Switch法:逻辑直观,适合初学者理解分支结构
四、完整代码示例(数组法)
五、运行与测试
- 编译运行
- 按Ctrl + F5(不调试运行)或F5(调试运行)
- 测试样例
输入 预期输出 说明 2018,8
31
普通31天月份 2020,2
29
闰年2月 2023,2
28
平年2月 2025,13
错误提示 无效月份处理
六、常见问题
- 输入逗号不生效?
- 检查
scanf
格式字符串是否为"%d,%d"
,确保输入时用逗号分隔(如2024,2
)
- 检查
- VS报错“scanf不安全”
- 在文件开头添加
#define _CRT_SECURE_NO_WARNINGS
- 在文件开头添加
- 2月天数错误?
- 检查闰年判断逻辑是否遗漏
% 400
条件(如1900年不是闰年)
- 检查闰年判断逻辑是否遗漏
关键知识点复习
知识点 | 要点 |
---|---|
闰年条件 | 4整除且非100整除 或 400整除 |
月份天数存储 | 数组法:days[13] 存储,下标1-12对应月份
3 5 |
输入处理 | scanf("%d,%d", &year, &month) 匹配逗号分隔输入 |
VS项目配置 | 创建空项目 → 添加.c 文件 → 确保扩展名为.c
7 8 |
错误处理 | 校验月份范围(1-12),返回-1标识无效输入 |
此方案兼顾效率与可读性,适合学习和实际使用。通过数组法可快速扩展功能(如输出全年日历),而VS2019的工程化管理便于后续维护。