您的位置:首页 > 编程语言 > C语言/C++

问题:利用 C++的各种控制语句编写一个万年历程序。 要求:显示任何年份的日历,日历以月份顺序排列,每月以星期顺序排列,类似于一 般挂历上的格式。

2016-08-08 17:25 746 查看
#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");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐