万年历

发布时间:   来源:文档文库   
字号:

#include"wannianli1.h"classDate{
private:
intYear,Month,Day,i,sum;public:
Date(;
voidSUM(;intfun1(int;intday(int;voidoutput2(;voidoutput1(;voidoutput3(;};
Date::Date({
cout<<"请输入年月日:"<
cin>>Year;cout<<"";cin>>Month;cout<<"";cin>>Day;cout<<"";cout<}
voidDate::SUM({
intk,sumY=0,sumM,M,year,y;y=Year-1;//k=(Year-1/4;
//sumY=(365*4+1*k+(Year-1%4*365;
for(k=1;k<=y;k++{
if(k%100!=0&&k%4==0year=366;elseif(k%400==0year=366;elseyear=365;
sumY+=year;}




M=Month-1;
if(M==0sumM=0;
elseif(M==1sumM=31;elseif(M==2sumM=31+28;elseif(M==3sumM=31+28+31;elseif(M==4sumM=31+28+31+30;elseif(M==5sumM=31+28+31+30+31;elseif(M==6sumM=31+28+31+30+31+30;elseif(M==7sumM=31+28+31+30+31+30+31;elseif(M==8sumM=31+28+31+30+31+30+31+31;elseif(M==9sumM=31+28+31+30+31+30+31+31+30;
elseif(M==10sumM=31+28+31+30+31+30+31+31+30+31;elseif(M==11sumM=31+28+31+30+31+30+31+31+30+31+30;
if(Year%4==0&&Year%100!=0&&M>=2sumM++;if(Year%400==0&&M>=2sumM++;
i=(sumY+sumM+Day%7;sum=sumY+sumM+Day;}
intDate::fun1(intm//计算m月的第一天是星期几?{
intk,sumY=0,sumM,M,year,y;y=Year-1;
//k=(Year-1/4;
//sumY=(365*4+1*k+(Year-1%4*365;for(k=1;k<=y;k++{
if(k%100!=0&&k%4==0year=366;elseif(k%400==0year=366;elseyear=365;
sumY+=year;}
M=m-1;



if(M==0sumM=0;
elseif(M==1sumM=31;elseif(M==2sumM=31+28;elseif(M==3sumM=31+28+31;elseif(M==4sumM=31+28+31+30;elseif(M==5sumM=31+28+31+30+31;elseif(M==6sumM=31+28+31+30+31+30;elseif(M==7sumM=31+28+31+30+31+30+31;elseif(M==8sumM=31+28+31+30+31+30+31+31;elseif(M==9sumM=31+28+31+30+31+30+31+31+30;
elseif(M==10sumM=31+28+31+30+31+30+31+31+30+31;elseif(M==11sumM=31+28+31+30+31+30+31+31+30+31+30;
if(Year%4==0&&Year%100!=0&&M>=2sumM++;if(Year%400==0&&M>=2sumM++;
if((sumY+sumM+1%7!=0return(sumY+sumM+1%7;elsereturn7;}
intDate::day(intb//月有多少天......{
switch(b{
case1:case3:case5:case7:case8:case10:
case12:return31;break;
case4:case6:case9:
case11:return30;break;
case2:if(Year%4==0&&Year%100!=0||Year%4==0return29;elsereturn28;
break;
}



}
voidDate::output2({intj,b,c;
c=day(Month;//这个月有多少天......
cout<"<"<"<"<"<"<"<
b=fun1(Month;//月的第一天是星期几......
for(j=1;j{
cout<}
for(j=1;j<=c;j++{
if((b+j-1%7==0cout<elsecout<}}
voidDate::output3({
intm,j,k,l,t,n;
intm1=1,m2=2,m3=3;intb1,b2,b3;
intd1=1,d2=1,d3=1;cout<
cout<<"请选择数字1.2.3:";cin>>n;cout<
for(k=0;k<12/n;k++//一大块输出需要输出几次...{
for(m=1;m<=n;m++{
cout<"<"<"<"<"<"<"<
}//m每行输出表头...



cout<
b1=fun1(m1;//星期几??????b2=fun1(m2;b3=fun1(m3;
for(l=0;l<7;l++//7hang{
for(m=0;m<7;m++{
if((d1>=b1&&(d1<=(day(m1+b1-1cout<
elsecout<d1++;}//m
cout<
if(n>=2{
for(j=0;j<7;j++{
//if((b2<=d2&&((d2-b2+1<=day(m2if((d2>=b2&&(d2<=(day(m2+b2-1cout<
elsecout<d2++;
}//j
cout<if(n==3{
for(t=0;t<7;t++{
//if((b3<=d3&&((d3-b3+1<=day(m3if((d3>=b3&&(d3<=(day(m3+b3-1cout<
elsecout<d3++;}//t}//ifn=3
}//if
cout<



}//lm1+=n;m2+=n;m3+=n;
d1=d2=d3=1;
getchar(;//getchar}//k}
voidDate::output1({cout<<"公元"<"<"<";{if(Month>=12||Month<=1||Day>=31||Day<=1cout<<"ERROR!"<}
SUM(;
if(i==0cout<<"星期日"<elseif(i==1cout<<"星期一"<elseif(i==2cout<<"星期二"<elseif(i==3cout<<"星期三"<elseif(i==4cout<<"星期四"<elseif(i==5cout<<"星期五"<elseif(i==6cout<<"星期六"<}
#include"wannianli2.h"intmain({system("color3E";{structtm*local;time_tt;t=time(NULL;local=localtime(&t;



printf("Localhouris:%d\n",local->tm_hour;local=gmtime(&t;printf("UTChouris:%d\n",local->tm_hour;}{longi=10000000L;clock_tstart,finish;doubleduration;/*测量一个事件持续的时间*/printf("Timetodo%ldemptyloopsis",i;start=clock(;while(i--finish=clock(;duration=(double(finish-start/CLOCKS_PER_SEC;printf("%fseconds\n",duration;system("pause";}
Datemydate;
system("cls";




mydate.output1(;
mydate.output2(;mydate.output3(;
cout<
cout<<"..."<cout<<"无聊..."<
return0;}
万年历算星期几
只要随便说出公元几几年几月几日就可以马上算出是星期几。只要计算出日的代码,月份代码,年份代码。三个加起来除以七的余数就是星期几,(如余数是三,则就是星期三)
日的代码计算:日的代码最简单,就是它本身,是几号就是几。
月份代码计算:月份代码也很简单,下面有十二个数:144725736146分别代表一至十二月份每个月的代码。比如,九月份的代码为6(据姚江啸介绍,他是用逆推的方法,计算出这12个月份代码的,即知道某年某月某日是星期几,反过来推算月份代码。
年份代码计算:年份代码相对比较复杂,先记住2000年对应的年份代码是4,这是基础代码,牢记即可。
假如大于2000年,比如2010年,则对应的年份代码是(20102000)÷4=2……2再用基数代码4减去2倍的商加上余数再加1。即42×2+2+1=3,则2010年对应的年份代码为3。如果没有余数,即润年,则余数后面的1也不用加。比如2008年,对应的年份代码为0
假如小于2000年,比如1991年,则对应的年份代码是(20001991)÷4=2……1再用基数代码4加上2倍的商减去余数。4+2×21=71991年对应的年份代码为7再记住1个特殊情况,即润年的312月份到最后要加1
举个例子吧,比如1992827日。20001992÷2=2……04+2×20=8年份代码计算结果为8,加上8月份的代码3,再加上日的代码27,因为是润年,所以还要1,等于39。再除以七的余数为4,则这一天为星期四。


本文来源:https://www.2haoxitong.net/k/doc/90bf4f4c852458fb770b566b.html

《万年历.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式