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,则这一天为星期六.
.....敢问兄台也是山东交通学子?
恩人呐/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;
}