#include
using namespacestd;
const intmon_day[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31};
int IsLeap(int year) //判断是不是闰年
{
if(year%400==0 || (year%4==0 &&year%100!=0))
return 1;
else
return 0;
}
voidShowCalenDar(int y,int m) //打印输出y年m月的日历 就和日历一样的
{
if(m==0)
{
m=12,y=y-1;
}
if(m==13)
{
m=1,y=y+1;
}
int i=0,j=0,t=0,n=0;
t =y-1;
t =(1+t+t/4-t/100+t/400)%7; //t为当前年份一月一号的星期
n =IsLeap(y);
for(i=1;i{
t+=mon_day[n][i-1];
t %=7;
}
if(t==0)
t = 7; //计算后的t为当前年份当前月份一号的星期
cout<cout< cout<<"------------------------------"< cout<<" 一 二 三 四 五 六 日"<
for(j=1;jcout<<" ";
for(j=1;j<=mon_day[n][m-1];j++)
{
printf("%4d",j);
t++;
if(t==8)
{
cout<t = 1;
}
}
if(t!=1)
cout<
cout<<"------------------------------"<cout< }
int main()
{
int year,month;
while(1)
{
cout<<"请输入年份和月份 :";
cin>>year>>month;
ShowCalenDar(year,month-1);
ShowCalenDar(year,month);
ShowCalenDar(year,month+1);
}
return 0;
}
这是C++的 核心算法都一样的 你自己改改 吧