用C语言编写一个程序给出年月日,计算该日是该年的第几天。
时间: 2024-10-27 13:09:03 浏览: 26
C语言计算某日是该年的第几天
为了计算给定日期是当年的第几天,我们可以使用蔡勒公式(Zeller's congruence),这是一个古老的算法用于快速估算某一天是当年度数的第几天。以下是C语言实现的一个示例:
```c
#include <stdio.h>
#include <stdbool.h>
// 蔡勒公式计算日期所在的天数
unsigned int zeller_congruence(int day, int month, int year) {
bool is_leap_year = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)); // 判断是否为闰年
int q = day, m = month + 1, k = year % 100, j = year / 100;
if (month < 3) { // 若月份小于3(即非公历),需调整月份(减去1)
m += 12;
j--;
}
q = (q + ((13 * (m + 1)) / 5) + k + (k / 4) + (j / 4) - 2 * j) % 7;
return is_leap_year ? 366 : 365; // 返回总天数(闰年366天,平年365天)
}
int main() {
int day, month, year;
printf("请输入日期(格式:dd mm yyyy): ");
scanf("%d %d %d", &day, &month, &year);
if (day >= 1 && day <= 31 && month >= 1 && month <= 12) {
int days_in_year = zeller_congruence(day, month, year);
printf("该日期是%d年的第%d天。\n", year, days_in_year);
} else {
printf("输入的日期无效,请确保日期在有效范围内。\n");
}
return 0;
}
```
阅读全文