判断是否为闰年(C语言)

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。补上时间差的年份为闰年。

地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。现行公历中每400年有97个闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来。因此每四百年中要减少三个闰年。所以公历规定:年份是整百数时,必须是400的倍数才是闰年;不是400的倍数的年份,即使是4的倍数也不是闰年[1]。

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

// 判断闰年的函数
int isLeapYear(int year) {
    if (year <= 0) {
        return 0; // 公元前的年份不考虑
    }
    
    // 闰年规则:
    // 1. 能被4整除但不能被100整除,或者
    // 2. 能被400整除
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        return 1; // 是闰年
    } else {
        return 0; // 不是闰年
    }
}

int main() {
    printf("公元1年到2024年之间的闰年有:\n");
    
    int count = 0;
    for (int year = 1; year <= 2024; year++) {
        if (isLeapYear(year)) {
            printf("%d ", year);
            count++;
            
            // 每行打印10个年份
            if (count % 10 == 0) {
                printf("\n");
            }
        }
    }
    
    printf("\n\n总共%d个闰年\n", count);
    return 0;
}

程序说明:

  1. 闰年判断规则

    • 能被4整除但不能被100整除,或者

    • 能被400整除的年份是闰年

  2. 程序功能

    • 遍历公元1年到2024年

    • 使用isLeapYear函数判断每个年份是否为闰年

    • 打印所有闰年,每行10个

    • 最后输出闰年总数

  3. 注意事项

    • 公元前的年份(year <= 0)被忽略

    • 格里高利历(公历)从1582年开始采用,之前的闰年计算可能有历史差异,但程序使用现代规则统一计算

这个程序会输出从公元1年到2024年之间的所有闰年,并统计总数。

相关推荐
CPUOS201014 分钟前
嵌入式C语言高级编程之MVC设计模式
c语言·设计模式·mvc
jolimark14 分钟前
C语言存在的问题及Zig语言如何改进,差异对比全在这
c语言·内存管理·系统编程·类型系统·zig语言
知行合一。。。25 分钟前
Python--05--面向对象(属性,方法)
android·开发语言·python
青梅橘子皮32 分钟前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
浅时光_c1 小时前
3 shell脚本编程
linux·开发语言·bash
Evand J1 小时前
【三维轨迹目标定位,CKF+RTS,MATLAB程序】基于CKF与RTS平滑的三维非线性目标跟踪(距离+方位角+俯仰角)
开发语言·matlab·目标跟踪
今天又在写代码2 小时前
java-v2
java·开发语言
competes3 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
Ulyanov3 小时前
用Pyglet打造AI数字猎人:从零开始的Python游戏开发与强化学习实践
开发语言·人工智能·python
独自归家的兔3 小时前
OCPP 1.6 协议详解:StatusNotification 状态通知指令
开发语言·数据库·spring boot·物联网