编程序判断输入年份的3月1日是星期几
时间: 2024-01-05 09:02:25 浏览: 110
可以使用蔡勒公式(Zeller's congruence)来计算:
W = (y + y//4 - y//100 + y//400 + (13*m+8)//5 + 1 + d) % 7
其中,W为星期几(0为周日,1为周一,以此类推),y为年份,m为月份,d为日期。需要注意的是,对于1月和2月,需要将它们看作前一年的13月和14月,即y-1和m+12。
在Python中,可以这样实现:
def day_of_week(year, month, day):
if month < 3:
year -= 1
month += 12
return (year + year//4 - year//100 + year//400 + (13*month+8)//5 + day) % 7
例如,输入2022年3月1日,可以这样调用函数:
>>> day_of_week(2022, 3, 1)
2
由于2代表星期二,所以2022年3月1日是星期二。
相关问题
(4)编程序判断输入年份的3月1日是星期几?
这个问题可以直接回答,可以使用基姆拉尔森计算公式来计算。公式为:W= (y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7,其中y为输入的年份的后两位数字,c为输入的年份的前两位数字,m为输入的月份(3表示三月),d为输入的日期(1表示1日),[]表示向下取整。最后W的值对应的数字代表星期几,0表示星期日,1表示星期一,以此类推。
用c语言程序判断输入的年份的3月1日是星期几,要求选取2000年3月1日周三为基准
要编写一个C语言程序来判断任意输入年份的3月1日是星期几,并以2000年3月1日星期三作为参考基准,我们可以先创建一个基准日期(如2000年3月1日)的星期几变量,然后利用Zeller's congruence算法计算其他年份的3月1日相对于这个基准的偏移量。这里是相应的代码:
```c
#include <stdio.h>
#include <stdbool.h> // 添加头文件以支持布尔值
// 定义基准日期和其星期
const int base_year = 2000;
const int base_month = 3;
const int base_day = 1;
const char base_weekday[] = "Wednesday"; // 基准为周三
// Zeller's congruence 函数
char get_weekday(int year, int month, int day) {
int century = year / 100;
int week_day = (day + ((13 * (month + 1)) / 5) + century + century / 4 - century / 100 + century / 400) % 7;
// 将星期从0-6转换为与base_weekday相对应的英文字符
switch (week_day) {
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;
char reference_weekday[10];
// 输入年份
printf("请输入年份: ");
scanf("%d", &year);
// 输入月份和日期
printf("请输入月份(1-12): ");
scanf("%d", &month);
printf("请输入日期: ");
scanf("%d", &day);
// 计算给定日期的星期
char actual_weekday = get_weekday(year, month, day);
// 判断是否为星期三
if (!strcmp(actual_weekday, base_weekday)) {
printf("%d年%02d月%02d日是星期三,与2000年3月1日同为基准.\n", year, month, day);
} else {
printf("%d年%02d月%02d日不是星期三,与2000年3月1日相比有偏差.\n", year, month, day);
}
return 0;
}
阅读全文