C语言课程设计,万年历算星期几,只要随便说出公元几几年几月几日就可以马上算出是星期几. 阿里噶道/跪

如题所述

万年历算星期几
只要随便说出公元几几年几月几日就可以马上算出是星期几.
只要计算出日的代码,月份代码,年份代码.三个加起来除以七的余数就是星期几,(如余数是三,则就是星期三).
日的代码计算:日的代码最简单,就是它本身,是几号就是几.
月份代码计算:月份代码也很简单,下面有十二个数:1 4 4 7 2 5 7 3 6 1 4 6,分别代表一至十二月份每个月的代码.比如,九月份的代码为6.(据来宾介绍,他是用逆推的方法,计算出这12个月份代码的,即知道某年某月某日是星期几,反过来推算月份代码.)
年份代码计算:年份代码相对比较复杂,先记住2000年对应的年份代码是4,这是基础代码,牢记即可.
假如大于2000年,比如2010年,则对应的年份代码是(2010-2000)÷4=2……2,再用基数代码4减去2倍的商加上余数再加1.即4-2×2+2+1=3,则2010年对应的年份代码为3.如果没有余数,即润年,则余数后面的1也不用加.比如2008年,对应的年份代码为0.
假如小于2000年,比如1991年,则对应的年份代码是(2000-1991)÷4=2……1,再用基数代码4加上2倍的商减去余数.即4+2×2-1=7,则1991年对应的年份代码为7.
再记住1个特殊情况,即润年的3到12月份到最后要加1.
1949年10月1日.
则(2000-1949)÷4=12……3,再4+2×12-3=25,年份代码计算结果为25,加上10月份的代码1,再加上日的代码1,等于27.再除以七的余数为6,则这一天为星期六.追问

.....敢问兄台也是山东交通学子?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-14
我可以帮你解决这个问题。追问

恩人呐/55555,敢问如何解决

追答

/*

**程序描述:万年历算星期几,只要随便说出公元几几年几月几日就可以马上算出是星期几。

*/

#include <stdio.h>

//闰年计算

int leap_year(int year)

{

    if(year%400==0||(year%4==0 && year%100!=0))

        return 1;

    else

        return 0;

}


int what_is_weekday(int year, int month, int day)

{

int yearCode,monthCode,dayCode;

int a[12]={1,4,4,7,2,5,7,3,6,1,4,6};

int quotient;  //商

int remainder; //余数

int i,result,sum;

//年份代码计算

if(year == 2000)

yearCode=4;

else if(year > 2000)

{

quotient=(year-2000)/4;

remainder=(year-2000)%4;

yearCode=4-2*quotient+remainder+leap_year(year);

}

else

{

quotient=(2000-year)/4;

remainder=(2000-year)%4;

yearCode=4+2*quotient-remainder+leap_year(year);

}

//月份代码计算

for(i=0;i<12;i++)

{

if(month == i+1)

{

monthCode=a[i];

}

}

//日的代码计算

dayCode=day;

//计算出是星期几

sum=yearCode+monthCode+dayCode;

result=sum%7;

return result;

}

int main()

{

int year,month,day;

printf("输入年,月,日: ");

scanf("%d%d%d",&year,&month,&day);

printf("公元%d年%d月%d日是: 星期%d\n",year,month,day,what_is_weekday(year,month,day));

return 0;

}

追问

请问这是咋整的,是算法的问题吗?

本回答被提问者采纳
相似回答