#include<iostream>
class calendar
{
//基准为2000,1,1,星期六
int y;
int m;
int d;
int sum ;
public:
calendar(int year, int month)
{
y = year;
m = month;
}
//是否闰年
int isleap()
{
if ((0 == y % 400) || (y % 100 != 0 && 0 == y % 4))
{
return 1;
}
return 0;
}
int count()//计算2016,4
{
sum = 0;
int mon[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//加上年份
if (y >= 2001)
{
for (int i = 2001; i < y; i++)
{
if ((0 == i % 400) || (i % 100 != 0 && 0 == i % 4))
{
sum += 366;
sum %= 7;
}
else
{
sum += 365;
sum %= 7;
}
}
//加上月份
for (int i = 0; i < m - 1; i++)
{
sum += mon[i];
}
//加上闰年多一天
if (isleap())
{
if (m >= 3)
{
sum += 1;
}
}
sum = sum % 7 ;
}
else
{
for (int i = y+1; i<2001; i++)
{
if ((0 == i % 400) || (i % 100 != 0 && 0 == i % 4))
{
sum += 366;
sum %= 7;
}
else
{
sum += 365;
sum %= 7;
}
}
//加上月份
for (int i = 11; i >= m - 1; i--)
{
sum += mon[i];
}
//加上闰年多一天
if (isleap())
{
if (m <= 2)
{
sum += 1;
}
}
std::cout << sum << std::endl;
sum = sum % 7;
sum = 7 - sum;
}
return sum;
}
void show()
{
std::cout << " " << m << "月份 " << std::endl;
std::cout << "星期一 星期二 星期三 星期四 星期五 星期六 星期天 " << std::endl;
int qi = count();
for (int i = 0; i <qi; i++)
{
std::cout << " ";
}
int mon[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (isleap() && m == 2)
{
mon[2 - 1] = 29;
}
for (int i = 1; i <= mon[m - 1]; i++)
{
std::cout << " " << i<< " ";
if (i < 10)
{
std::cout << " ";
}
qi++;
if (7== qi)
{
std::cout <<std::endl;
std::cout << " " << std::endl;
qi = 0;
}
}
std::cout << "\n\n" << std::endl;
}
};
void main()
{
calendar calen(2000, 2);
calendar calen1(2016, 2);
calen.show();
calen1.show();
system("pause");
}
class calendar
{
//基准为2000,1,1,星期六
int y;
int m;
int d;
int sum ;
public:
calendar(int year, int month)
{
y = year;
m = month;
}
//是否闰年
int isleap()
{
if ((0 == y % 400) || (y % 100 != 0 && 0 == y % 4))
{
return 1;
}
return 0;
}
int count()//计算2016,4
{
sum = 0;
int mon[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
//加上年份
if (y >= 2001)
{
for (int i = 2001; i < y; i++)
{
if ((0 == i % 400) || (i % 100 != 0 && 0 == i % 4))
{
sum += 366;
sum %= 7;
}
else
{
sum += 365;
sum %= 7;
}
}
//加上月份
for (int i = 0; i < m - 1; i++)
{
sum += mon[i];
}
//加上闰年多一天
if (isleap())
{
if (m >= 3)
{
sum += 1;
}
}
sum = sum % 7 ;
}
else
{
for (int i = y+1; i<2001; i++)
{
if ((0 == i % 400) || (i % 100 != 0 && 0 == i % 4))
{
sum += 366;
sum %= 7;
}
else
{
sum += 365;
sum %= 7;
}
}
//加上月份
for (int i = 11; i >= m - 1; i--)
{
sum += mon[i];
}
//加上闰年多一天
if (isleap())
{
if (m <= 2)
{
sum += 1;
}
}
std::cout << sum << std::endl;
sum = sum % 7;
sum = 7 - sum;
}
return sum;
}
void show()
{
std::cout << " " << m << "月份 " << std::endl;
std::cout << "星期一 星期二 星期三 星期四 星期五 星期六 星期天 " << std::endl;
int qi = count();
for (int i = 0; i <qi; i++)
{
std::cout << " ";
}
int mon[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (isleap() && m == 2)
{
mon[2 - 1] = 29;
}
for (int i = 1; i <= mon[m - 1]; i++)
{
std::cout << " " << i<< " ";
if (i < 10)
{
std::cout << " ";
}
qi++;
if (7== qi)
{
std::cout <<std::endl;
std::cout << " " << std::endl;
qi = 0;
}
}
std::cout << "\n\n" << std::endl;
}
};
void main()
{
calendar calen(2000, 2);
calendar calen1(2016, 2);
calen.show();
calen1.show();
system("pause");
}