怎么用c语言求输入日期是星期几?写代码并解释一下。
时间: 2024-11-03 13:17:58 浏览: 7
根据日期计算星期几的C语言代码
要使用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 day_of_week(int y, int m, int d) {
if (m < 3)
m += 12, y--;
int h = (y + floor((m - 1)/12)) + floor(d/4) +
floor((m + 1) / 4) - 2 * floor(y / 100) +
floor(y / 400);
// Zeller's Congruence
h %= 7;
switch (h) {
case 0: return "Sunday"; // 星期天
case 1: return "Monday"; // 星期一
case 2: return "Tuesday"; // 星期二
case 3: return "Wednesday"; // 星期三
case 4: return "Thursday"; // 星期四
case 5: return "Friday"; // 星期五
case 6: return "Saturday"; // 星期六
}
}
int main() {
int year, month, day;
printf("Enter the date (YYYY MM DD): ");
scanf("%d %d %d", &year, &month, &day);
// 检查月份是否有效(范围1-12)
if (month < 1 || month > 12) {
printf("Invalid month.\n");
return 1;
}
// 计算星期几
char weekday[10];
strcpy(weekday, day_of_week(year, month, day));
printf("The date %d-%d-%d is a %s.\n", year, month, day, weekday);
return 0;
}
```
这段代码首先定义了一个辅助函数`is_leap_year()`来判断给定的年份是否为闰年,然后根据Zeller's Congruence公式计算星期几。主函数中从用户那里获取输入的日期,调用`day_of_week()`函数,并输出结果。
注意:Zeller's Congruence并不是最精确的方法,现代计算机通常会直接依赖操作系统提供的API来获取准确的星期信息,但在学习或了解基础算法时,这是一个实用的练习。
阅读全文