写一段C代码,输入年月日,输出星期几
时间: 2024-01-19 16:02:48 浏览: 115
C语言: 输入任意年月日,求该天是星期几
5星 · 资源好评率100%
好的,以下是一个简单的C程序,可以根据输入的年月日输出对应的星期几:
```c
#include <stdio.h>
// 判断是否为闰年
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
// 计算给定日期的星期几
int calculate_weekday(int year, int month, int day) {
static int month_days[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
int total_days = day; // 当月已过天数
for (int i = 1; i < month; i++) {
total_days += month_days[is_leap_year(year)][i];
}
int start_year = 1970; // 从 1970 年 1 月 1 日(星期四)开始计算
int days_diff = (year - start_year) * 365 + (year - start_year - 1) / 4 - (year - start_year - 1) / 100 + (year - start_year - 1) / 400; // 计算年数差异对应的天数
int weekday = (4 + days_diff + total_days) % 7; // 计算星期几
return weekday;
}
int main() {
int year, month, day;
printf("请输入日期(格式:年 月 日):");
scanf("%d %d %d", &year, &month, &day);
int weekday = calculate_weekday(year, month, day);
switch (weekday) {
case 0:
printf("星期日\n");
break;
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
default:
printf("无效的日期\n");
break;
}
return 0;
}
```
这个程序使用了一个 `calculate_weekday()` 函数来计算给定日期的星期几。它首先判断给定年份是否为闰年,然后根据月份和日期计算出当月已过天数,最后根据 1970 年 1 月 1 日(星期四)开始计算的天数差异,计算出星期几。
阅读全文