C语言输入一月一号星期几,判断哪个月的13号是星期五
时间: 2024-12-12 15:24:13 浏览: 24
在C语言中,要计算一月一号是星期几以及任意一个月份的13号是星期五,可以使用Zeller's congruence算法或更现代的时间库函数如`strftime()`和`strptime()`。这里我们主要讨论Zeller's congruence,它是一个古老但有效的数学公式用于计算日期的星期:
```c
#include <stdio.h>
#include <time.h>
int zeller(int year, int month, int day) {
if (month < 3) {
month += 12;
year--;
}
int h = (day + ((13 * (month + 1)) / 5) + year + (year / 4) - (year / 100) + (year / 400)) % 7;
return h;
}
int main() {
int year, month, day;
printf("Enter the date (format: YYYY-MM-DD): ");
scanf("%d-%d-%d", &year, &month, &day);
int day_of_week = zeller(year, month, day);
switch (day_of_week) {
case 0:
printf("%d/%d is a Sunday.\n", day, month);
break;
// Add cases for other days of the week
}
time_t timestamp;
struct tm t = {0};
t.tm_year = year - 1900; // Adjust for year zero
t.tm_mon = month - 1; // January is 0 in C standard
t.tm_mday = day;
t.tm_hour = 0;
t.tm_min = 0;
t.tm_sec = 0;
// Assuming glibc's strftime format
char buffer[8];
strftime(buffer, sizeof(buffer), "%A", &t);
printf("The 13th of this month is a %s.\n", buffer);
return 0;
}
```
这个程序首先计算给定日期是一周中的哪一天,然后使用`strftime()`获取13号那天的星期名称。请注意,这个程序仅适用于公历,并且假设输入的月份范围在1到12之间。
阅读全文