C语言实现日期天数计算

完整代码(C语言)

c 复制代码
#include <stdio.h>

int main() {
    int year, month, day;
    int days = 0;  // 累计天数

    // 输入年月日
    printf("请输入日期(年 月 日):");
    scanf("%d %d %d", &year, &month, &day);

    // switch 累加前面月份的总天数
    switch (month - 1) {
        case 11: days += 30;  // 11月
        case 10: days += 31;  // 10月
        case  9: days += 30;  // 9月
        case  8: days += 31;  // 8月
        case  7: days += 31;  // 7月
        case  6: days += 30;  // 6月
        case  5: days += 31;  // 5月
        case  4: days += 30;  // 4月
        case  3: days += 31;  // 3月
        case  2: days += 28;  // 2月(默认28天)
        case  1: days += 31;  // 1月
        case  0: days += day; // 加上当月的天数
    }

    // 判断闰年:2月多加1天
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        if (month > 2) {
            days++;
        }
    }

    printf("这是 %d 年的第 %d 天\n", year, days);
    return 0;
}

核心原理

  1. switch 没有 break

    month-1 开始一路往下执行 ,把前面所有月份的天数全部累加

  2. 天数规则

    • 1、3、5、7、8、10、12月:31天
    • 4、6、9、11月:30天
    • 2月:平年28天,闰年29天
  3. 闰年判断

    满足:

    • 能被4整除但不能被100整除
    • 能被400整除
      如果月份大于2,总天数+1。

运行示例

输入:

复制代码
2025 3 15

输出:

复制代码
这是 2025 年的第 74 天
相关推荐
土司大王5 小时前
LeetCode hot100——对称二叉树
算法·leetcode·职场和发展
sali-tec5 小时前
C# 基于OpenCv的视觉工作流-章106-差值追踪
图像处理·人工智能·opencv·算法·计算机视觉
Navigator_Z5 小时前
LeetCode //C - 1208. Get Equal Substrings Within Budget
c语言·算法·leetcode
手写码匠5 小时前
Dify 多 Agent 工具权限与安全沙箱实战:让智能体“有能力,但不越权“
人工智能·深度学习·算法·aigc
黎阳之光6 小时前
打破堆场感知黑盒:黎阳之光视频孪生,构建港口码头网格化透明管控新体系
大数据·人工智能·算法·安全·数字孪生
xx~t6 小时前
嵌入式——进程与线程1
linux·c语言·学习·嵌入式·进程与线程
大模型码小白6 小时前
AI 对话流性能调优:万级消息的虚拟滚动落地
java·大数据·前端·javascript·人工智能·算法·机器学习
m0_547486666 小时前
《JavaScript核心原理 》全套PPT课件2026
开发语言·javascript·ecmascript
老当益壮梁奶奶6 小时前
Linux软件编程学习笔记(七):线程分离与线程间通信详解
linux·c语言·c++·笔记·学习
MC皮蛋侠客7 小时前
Tauri 2.x 系列(五):调用系统 API——官方插件、Rust crate 与原生能力
开发语言·后端·rust