如何用C语言编写一个函数来计算给定日期是该年中的第几天,利用循环实现?
时间: 2024-11-06 15:20:19 浏览: 28
在C语言中,我们可以编写一个函数来计算给定日期是该年的第几天,通常采用类似于Zeller's congruence的算法,或者逐月累加天数的方式。这里我们提供一种简单的方法,即逐月累计法:
```c
#include <stdio.h>
// 函数声明
int dayOfYear(int year, int month, int day);
// 计算某一年中特定月份的天数
int daysInMonth(int month, int year) {
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
// 考虑闰年的情况
default:
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return 29; // 二月有29天
} else {
return 28; // 非闰年二月有28天
}
}
}
// 主要函数:计算给定日期是一年中的第几天
int dayOfYear(int year, int month, int day) {
int totalDays = 0;
for (int i = 1; i < month; i++) { // 累加前几个月的天数
totalDays += daysInMonth(i, year);
}
totalDays += day; // 加上当前月份的天数
return totalDays;
}
int main() {
int year, month, day;
printf("请输入年份、月份和日:");
scanf("%d %d %d", &year, &month, &day);
int result = dayOfYear(year, month, day);
printf("给定日期 %d/%d/%d 是该年的第 %d 天.\n", day, month, year, result);
return 0;
}
阅读全文