Zeller公式及其c++实现
来源:互联网 发布:qq软件升级 编辑:程序博客网 时间:2024/04/28 03:28
蔡勒公式
蔡勒(Zeller)公式:是一个计算 星期的公式。随便给一个日期,就能用这个公式推算出是星期几。
蔡勒公式如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪(前两位数)
y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。
以上的公式都只适合于1582年(我国明朝万历十年)10月15日之后的情形。罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。
后来人们将这一新的历法称为“格里高利历”,也就是今天世界上所通用的历法,简称格里历或公历。
以下是代码实现:
#include <string>
#include <iostream>
using namespace std;
void Zeller()
{
string Weekday[7] =
{
"星期日","星期一","星期二",
"星期三","星期四","星期五",
"星期六"
};
int Month[12] =
{
31,28,31,30,31,30,31,31,20,31,30,31
};
int year, month, day,w,c,y,m,d ;
do{
cout << "请输入年份:" << endl;
cin >> year;
}
while(year > 10000 && year <= 1582);
if( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ) //判断闰年的情况
{
Month[1] = 29;
}
do{
cout << "请输入月份:" << endl;
cin >> month;
}
while(month > 12 || month <= 0);
do{
cout << "请输入日期:" << endl;
cin >> day;
}
while(day > Month[month - 1] || day <= 0);
//使用蔡勒(Zeller)公式计算星期几,1582年后有效
if( month <= 2) //1,2 月看做上一年的 13,14 月
{
c = (year - 1) / 100;
y = (year - 1) % 100;
m = month + 12;
}
else
{
c = year / 100;
y = year % 100;
m = month;
}
w = y + y /4 + c / 4 - 2 * c + 26 *(m + 1) / 10 + day -1;
if(w > 7)
{
w = w % 7;
}
else //被除数为负数的情况
{
while(w < 0)
{
w = w + 7;
}
}
cout << year << "年"<< month << "月"<<day <<"日" << "是"
<< Weekday[w];
}
void main()
{
Zeller();
}
#include <iostream>
using namespace std;
void Zeller()
{
string Weekday[7] =
{
"星期日","星期一","星期二",
"星期三","星期四","星期五",
"星期六"
};
int Month[12] =
{
31,28,31,30,31,30,31,31,20,31,30,31
};
int year, month, day,w,c,y,m,d ;
do{
cout << "请输入年份:" << endl;
cin >> year;
}
while(year > 10000 && year <= 1582);
if( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ) //判断闰年的情况
{
Month[1] = 29;
}
do{
cout << "请输入月份:" << endl;
cin >> month;
}
while(month > 12 || month <= 0);
do{
cout << "请输入日期:" << endl;
cin >> day;
}
while(day > Month[month - 1] || day <= 0);
//使用蔡勒(Zeller)公式计算星期几,1582年后有效
if( month <= 2) //1,2 月看做上一年的 13,14 月
{
c = (year - 1) / 100;
y = (year - 1) % 100;
m = month + 12;
}
else
{
c = year / 100;
y = year % 100;
m = month;
}
w = y + y /4 + c / 4 - 2 * c + 26 *(m + 1) / 10 + day -1;
if(w > 7)
{
w = w % 7;
}
else //被除数为负数的情况
{
while(w < 0)
{
w = w + 7;
}
}
cout << year << "年"<< month << "月"<<day <<"日" << "是"
<< Weekday[w];
}
void main()
{
Zeller();
}
- Zeller公式及其c++实现
- 蔡勒(Zeller)公式
- 蔡勒(Zeller)公式
- 蔡勒(Zeller)公式
- 使用 Zeller 公式计算 DayOfWeek
- 著名的是蔡勒(Zeller)公式
- 蔡勒(Zeller)公式(计算星期)
- 蔡勒(Zeller)公式(计算星期)
- 蔡勒(Zeller)公式(计算星期)
- 蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
- HDU 6112 今夕何夕 (zeller\基姆拉尔森公式 星期公式)
- 如何计算某一天是星期几?(Zeller公式)
- 蔡勒(Zeller)公式:根据日期计算星期几
- 蔡勒(Zeller)公式(日期转星期)
- USACO "Friday the Thirteenth" 中蔡勒(Zeller)公式的使用
- 根据日期判断是星期几(zeller公式)
- 最小二乘法拟合圆公式推导及其实现
- 使用蔡勒(Zeller)公式计算任意一天星期几
- 信雅达电子影像系统雄踞市场第一
- 英特尔大连厂采用65纳米工艺获美国政府批准
- 每个初学者都应该搞懂的问题(java)(转)
- QuickTime简史
- 破解Access(*.mdb)目前所有版本的密码
- Zeller公式及其c++实现
- [笔记/简译]WPF的新特性——依赖属性(3)
- 检测上传图片的宽高,看是否符合你的要求
- 在全国20个城市的被调查女性中大连女性幸福感最强
- 吃下“天鹅肉” 美的与海尔竞逐全球白电五强
- 手机漫游费下调时间出台将于3月4月起执行
- [笔记/简译]WPF的新特性——依赖属性(4)
- 2007年末我国私人轿车保有量超1500万辆
- 转:ORACLE 动态SQL