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 天
相关推荐
晴天的雨.99214 分钟前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
IvanCodes5 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
aramae7 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
荆棘鸟智能8 小时前
城市感知设备怎么统一接入?从多协议网关到设备模型的中间件架构设计
人工智能·算法·边缘计算
无敌贵点大王8 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
Logic1018 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
qq_2518364579 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理10 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手10 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
+VX:Fegn089511 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计