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 天
相关推荐
ShallWeL14 小时前
【机器学习】(20)—— 类别不平衡
人工智能·算法·机器学习
geats人山人海14 小时前
c# 第八章 多态与案例
开发语言·c#
明志数科15 小时前
具身智能数据标准化:从碎片化接口到统一工作组的技术路径
人工智能·算法·机器学习
ch_atu15 小时前
使用python下载modelscope上的模型
开发语言·python
旖-旎15 小时前
LeetCode 494:目标和(动态规划/01背包问题)—— 题解
c++·算法·leetcode·动态规划·01背包
spssau15 小时前
一文学会结构方程模型:从模型搭建、路径图绘制到不达标调整,实操全流程
人工智能·python·算法
Albart57515 小时前
Python爬虫请求头伪装后仍被反爬,基于代理池+随机延迟的绕过实战
开发语言·爬虫·python
GeekArch15 小时前
第8讲:裸机单片机项目——Vibe快速迭代的最优边界
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·ai编程
Promise微笑15 小时前
回路电阻测试仪采购:多维度技术评估与深度避坑指南
开发语言·matlab·语音识别
zzz_236815 小时前
【Java实习面试算法冲刺】总复盘
java·算法·面试