编程序实现:输入任意一个日期的年、月、日的值,求出从这一年的1月1日到这一天总共有多少天。假定从公元第一天开始,就实施格里高利历法。格里高利历法的置闰规则是400年97闰,也可以概括为:四闰百不闰,四百闰。用C语言实现
时间: 2024-02-26 18:59:32 浏览: 84
以下是用 C 语言实现输入任意一个日期的年、月、日的值,求出从这一年的1月1日到这一天总共有多少天的代码:
```c
#include <stdio.h>
int is_leap_year(int year) {
return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}
int days_in_month(int year, int month) {
static const int days[] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
if (month == 2 && is_leap_year(year)) {
return 29;
} else {
return days[month - 1];
}
}
int days_in_year(int year) {
return is_leap_year(year) ? 366 : 365;
}
int days_since_jan1(int year, int month, int day) {
int days = 0;
for (int m = 1; m < month; m++) {
days += days_in_month(year, m);
}
days += day - 1;
return days;
}
int main() {
int year, month, day;
printf("请输入年、月、日:");
scanf("%d%d%d", &year, &month, &day);
int days = 0;
for (int y = 1; y < year; y++) {
days += days_in_year(y);
}
days += days_since_jan1(year, month, day);
printf("从 %d 年 1 月 1 日到这一天总共有 %d 天\n", year, days);
return 0;
}
```
在这个程序中,我们通过 `is_leap_year` 函数来判断一个年份是否为闰年,通过 `days_in_month` 函数来确定一个月份有多少天,通过 `days_in_year` 函数来确定一个年份有多少天,通过 `days_since_jan1` 函数来计算从一年的 1 月 1 日到这一天总共有多少天。最后,我们在 `main` 函数中读入日期的年、月、日的值,然后根据从公元第一天开始的日历规则计算出从这一年的 1 月 1 日到这一天总共有多少天。
阅读全文