已知2021年1月1日是星期五,计算2021年任意一天是星期几。 Input 每行输入两个正整数m和d,由空格分开,表示2021年的m月d号。 Output 每行输出该日的星期数(1-7)请用C语言来这个问题
时间: 2024-09-19 19:09:39 浏览: 57
你可以使用C语言编写一个基于蔡勒公式(Zeller's congruence)的函数来计算给定日期对应的星期几。蔡勒公式是一个古老的算法,用于计算从公元1到无穷大之间的日期对应的是星期几。下面是简单的代码实现:
```c
#include <stdio.h>
// 定义一个星期的天数
#define WEEK_DAYS 7
int zeller(int year, int month, int day) {
if (month < 3) {
month += 12;
year--;
}
int q = day + ((13 * (month + 1)) / 5) + year + (year / 4) - (year / 100) + (year / 400);
q %= WEEK_DAYS;
return q + 1; // 因为C语言从1开始计数星期,所以我们加1
}
int main() {
int m, d;
while (~scanf("%d %d", &m, &d)) {
int year = 2021;
printf("The given date %d/%d in 2021 is a %dth day of the week.\n", m, d, zeller(year, m, d));
}
return 0;
}
```
在这个程序中,`zeller` 函数接受年、月和日作为参数,并根据蔡勒公式返回一个介于1(代表星期一)到7(代表星期日)的值。然后在主函数中读取输入的月份和日子,并调用这个函数。