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 天
相关推荐
weixin_460443564 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
Cc.Y8 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
启观川8 小时前
数据结构与算法 -第 3 章 常用算法-动态规划
数据结构·笔记·python·算法
码爸8 小时前
排序算法介绍
python·算法·排序算法
阿森_dev8 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by209998 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说8 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha8 小时前
Lambda 表达式和函数式接口
java·开发语言
小白学大数据8 小时前
拼多多反爬对抗实战:Scrapy 中间件化采集架构解析
开发语言·scrapy·中间件·架构
学逆向的9 小时前
win32注入代码
开发语言·网络安全·api·win32