Zeller公式的应用:给定日期,确定周几

开篇

本篇文章依然是对于日期相关函数的实现。

问题概要

给定一个日期,返回为周几

思路分析

这个问题的思路只是对于Zeller公式的直接引用,不存在其他逻辑。公式详情可参考Zeller公式百科

代码实现

#include <stdio.h>

// 根据Zeller公式计算
int dayOfWeek(day, month, year) {
	if (month < 3) {
		month += 12;
		year -= 1;
	}

	int K = year % 100;
	int J = year / 100;

	int h = (day + (13 * (month + 1) / 5) + K + (K / 4) + (J / 4) + (5 * J)) % 7;

	return h;
}

int main() {
	int day, month, year;

	printf("输入一个日期(日 月 年): ");
	scanf_s("%d %d %d", &day, &month, &year);

	int weekday = dayOfWeek(day, month, year);
	printf("%d\n", weekday);

	weekday = (weekday + 6) % 7;

	const char* weekdays[] = {
		"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"
	};

	printf("这一天是 %s\n", weekdays[weekday]);

	return 0;
}

希望本文能对您有所帮助。
感谢阅读!

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值