#include <iostream>
#include <cstdio>
using namespace std;
int year,month;
int m=1;
int isleapyear(int year)
{
int isok=0;
return isok=year%4==0 || year%400==0 ? 1 : 0;
}
int yeardays(int year)
{
int days=0;
return days=isleapyear(year)?366:365;
}
int yearmonthdays(int year,int month)
{
int days=0;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 2:
days=(isleapyear(year)==1?29:28);
break;
}
return days;
}
int firstmonthweekday(int year,int month)
{
int days=0;
if(year>=2000)
{
for(int i=2000; i<year; i++)
days+=yeardays(i);
for(int i=1; i<month; i++)
days+=yearmonthdays(year,i);
}
if(year<2000)
{
for(int i=year+1; i<2000; i++)
days+=yeardays(i);
for(int i=month; i<=12; i++)
days+=yearmonthdays(year,i);
}
return days;
}
int yearmonthweekday(int year,int month)
{
int weekday=0;
if(year>=2000)
{
int n;
n=firstmonthweekday(year,month);
weekday=(n+6)%7;
}
else
{
int n;
n=firstmonthweekday(year,month);
weekday=6-n%7;
}
return weekday;
};
void displayyearmonth(int year,int month)
{
cout << "--------------" << year << "年" << month << "月" << "-----------------" << endl;
cout <<"日\t"<<"一\t"<<"二\t"<<"三\t"<<"四\t"<<"五\t"<<"六\t"<<"周\n";
int count=0;
for(int i=0; i<yearmonthweekday(year,month); i++)
{
cout << "\t";
count++;
}
for(int j=1; j<=yearmonthdays(year,month); j++)
{
cout << j << "\t";
count++;
if(count%7==0)
{
cout << m++ << "\t" << endl;
}
}
if(count%7!=0)
{
for(int i=0; i<7-count%7; i++)
cout << "\t";
cout << m++ << endl;
}
}
void displayyear(int year)
{
for(int i=1; i<=12; i++)
{
if(yearmonthweekday(year,i)!=0&&i!=1)
{
m--;
}
displayyearmonth(year,i);
}
}
int main()
{
cin >> year;
displayyear(year);
return 0;
}
万年历
最新推荐文章于 2024-07-20 21:06:11 发布