在C语言中判断星期几的方法主要有以下两种:
一、使用标准库函数(推荐)
通过time.h
库中的mktime()
和tm_wday
实现,代码简洁高效:
-
定义
struct tm
结构体并初始化日期 -
调用
mktime()
将结构体转换为时间戳 -
通过
tm_wday
获取星期数(0-6,0为星期日)
示例代码:
#include <stdio.h>
#include <time.h>
int main() {
char input;
struct tm date;
scanf("%s", input);
sscanf(input, "%d-%d-%d", &date.year, &date.month, &date.day);
date.tm_year -= 1900;
date.tm_mon -= 1;
date.tm_mday = date.day;
time_t t = mktime(&date);
int weekday = (t % 7) + 1; // 1-7对应星期一到星期日
printf("该日期是星期%d\n", weekday);
return 0;
}
二、手动计算(算法实现)
通过Zeller公式或日期差值计算,适合学习算法原理:
-
Zeller公式 (适用于公历):
int W = (Y-1)*365 + (Y-1)/4 - (Y-1)/100 + (Y-1)/400 + D
其中
D
为该月天数,W%7
为星期几(0-6,0为星期六)。 -
日期差值法 :
以1900年1月1日为基准,逐年、逐月累加天数差,最后取模7。
注意事项:
-
手动计算需注意闰年判断(如2月天数);
-
标准库方法更简洁且避免手动错误,建议优先使用。