计算某日是该年的第几天c语言代码
时间: 2024-10-20 09:18:15 浏览: 41
在C语言中,计算某一天是一年中的第几天可以使用蔡勒公式(Zeller's congruence)。这是一个古老的算法,用于快速估算日期。以下是使用蔡勒公式的简单代码:
```c
#include <stdio.h>
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int zellers_congruence(int day, int month, int year) {
if (month < 3) {
month += 12; // 如果月份小于3,调整为阳历对应月份
year--;
}
int q = day;
int m = month + 1;
int k = year % 100;
int j = year / 100;
int h = (q + ((13 * (m + 1)) / 5) + k + (k / 4) + (j / 4) - (2 * j)) % 7;
int result = (day + floor(26 * (m + 1) / 10) + k + floor(k / 4) + floor(j / 4) - (h + 5 * j)) % 7;
return result + 1; // 加上1是因为一周的第一天通常被看作是第一天
}
int main() {
int day, month, year;
printf("请输入日期(格式:dd mm yyyy):");
scanf("%d %d %d", &day, &month, &year);
if (is_leap_year(year)) {
month--; // 调整二月的天数(闰年)
}
int day_of_year = zellers_congruence(day, month, year);
printf("这一天是一年中的第%d天。\n", day_of_year);
阅读全文