用c语言程序判断输入的年份的3月1日是星期几,要求选取2000年3月1日周三为基准
时间: 2024-10-22 20:11:15 浏览: 11
要编写一个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;
}
阅读全文