万年历计算星期-基姆拉尔森公式

#include 

/*
* 基姆拉尔森计算公式
* W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
*/
int week(int y, int m, int d)
{
  if (m < 3) {
    m += 12;
    y--;
  }

  int w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
  return w;
}

int main()
{
  printf("%d\n", week(2015, 4, 16));  // => 3 星期四
  printf("%d\n", week(1989, 2, 3));   // => 4 星期五

  return 0;
}
时间: 2024-08-03 18:03:34

万年历计算星期-基姆拉尔森公式的相关文章

基姆拉尔森公式--计算日期周几

基姆拉尔森公式计算日期周几 #include <iostream> using namespace std; string week[] ={"Mon","tue","Wen","Thu","Fri","Sat","Sun"}; int main(){ int y,m,d; while(cin>>y>>m>>d){ if

计算周几的程序(基姆拉尔森公式)

using System; namespace HELLO { class Program { int week; int y, m, d; static void Main(string[] args) { int y, m, d; Console.WriteLine("请输入年月日"); Console.WriteLine("现在请输入年份"); y = int.Parse(Console.ReadLine()); Console.WriteLine("

nyoj 219 An problem about date 日期计算 附加最优代码(基姆拉尔森公式)

第一次直接计算的   超时了.后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面 #include <stdio.h> int main() { int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},year,mon,day; long long b[9605]={0},sum=0; for(int i=1600;i<9600;i++) { if(i%4==0&&i%100||i%400==0) sum+=3

用基姆拉尔森计算公式做一个课表

因为最近上网课,我大部分时间是用电脑上课,课程APP得在手机上打开,我觉得麻烦,就写了一个可以看当天有什么课的程序. 既然要写课表,我们就得创建一个7天循环,并每7天更改一次单双周的判断.这里我用的是基姆拉尔森公式(你不必纠结他的原理,只有能合理的使用就行),用它来获取年月日. 然后我设定了开学的那一天为起始天,每过7天改变单双周课表,这样就完成了啦!. 大概可以实现的功能就是这样,当然也可以用QT再去写一些界面来美化程序,或者用easyX可以,但是代码就是这些了. 写完发现这个根本没什么卵用.

08--MOOC--C/C++ 根据年月日计算星期几——蔡勒公式篇

C/C++ 根据年月日计算星期几——蔡勒公式篇 蔡勒公式  蔡勒(Zeller)公式:是一个计算星期的公式.随便给一个日期,就能用这个公式推算出是星期几.蔡勒公式如下:W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下:w:星期: w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c:世纪-1(前两

蔡勒公式——根据年月日计算星期几

蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出是星期几. 计算公式 由于罗马教皇搞了一些骚操作,这里给出的公式仅适用于1582年10月15日以后的星期,详情可参考 格里高利历 符号意义 w:星期: w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 c:世纪(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,而非正在进行的世纪,也就是现在常用的年份除以一百加一:不过如果年份是公元前的年份且非

[ C ]根据年月日判断周几(基姆拉尔森计算公式)

基姆拉尔森计算公式 是个好东西啊!那我们在什么时候用呢? 偶尔写程序会用上它,当我们在已知年月日的情况下想要快速的知道这天是周几时,用此公式很方便. 那下面来见见它的容颜: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 个人感觉挺复杂的,不过sei叫它有用呢 具体例子: int W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;    switch(W)    {    case 0: printf("星期一\n"

POJ 3047 Bovine Birthday 给出年月日求星期 蔡勒公式

题目来源:POJ 3047 Bovine Birthday 题意:... 思路:蔡勒公式 适合于1582年(中国明朝万历十年)10月15日之后的情形 公式 w = y + y/4 + c/4 - 2*c + 26 * (m+1)/10 + d - 1; m如果是1 2 月份 y要倒退1年 m += 12 y是年份的后两位 y = year%100 c是世纪 c = year/100 #include <cstdio> #include <cstring> using namespa

计算圆周率pai的公式:pai = 4*(1-1/3+1/5-1/7 ....)

历史上有许多计算圆周率pai的公式,其中,格雷戈里和莱布尼茨发现了下面的公式: pai = 4*(1-1/3+1/5-1/7 ....) 这个公式简单而优美,但美中不足,它收敛的太慢了. 如果我们四舍五入保留它的两位小数,那么: 累积了1项和是:4.00 累积了2项和是:2.67 累积了3项和是:3.47 ... 请你写出它累积了100项的和是多少(四舍五入到小数后两位). 源代码: #include<stdio.h> //pai = 4*(1-1/3+1/5-1/7 ....) double