返回日期的星期信息 (35 分)

返回日期的星期信息 (35 分)
定义一个日期类CData,其有数据成员year,month,day,函数成员有构造函数,析构函数,复制构造函数,显示日信息函数display
(年月日星期).函数Getweek是返回改日期是英文单词表示的星期几。
从键盘读入一个日期,先显示21世纪的第一天日期的信息(已知2000年1月1号是星期六),然后再建立一个新日期的信息。

输入格式:
输入一个日期(2000-1-1起的一个日期,保证输入日期合法有效)
之间以空格隔开
输出格式:
先输出21世纪第一天的日期信息
而后输出输入指定日期的信息
输入样例:
在这里给出一组输入。例如:
2000 1 31
输出样例:
在这里给出相应的输出。例如:
The first day of the 21st century:
2000-1-1:Saturday
2000-1-31:Monday*/

#include<iostream>
#include<string>
using namespace std;
class CDate
{
private:
	int year;
	int month;
	int day;
public:
	CDate(int year =2000,int month =1, int day = 1)
	{
		this->day = day; this->month = month; this->year = year;
	}
	~CDate() {}
	CDate(CDate& a)
	{ 
		this->day = a.day; 
		this->month = a.month;
		this->year = year; 
	}
	void display()
	{
		cout <<year<<"-" << month <<"-" << day <<":"<<pangduan() << endl;
	}
	string pangduan();
};
string CDate::pangduan()
{
	int arr[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
	int arr2[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	int temp = 1; int sum = 0; int sum1 = 0;
	if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
	{

		switch (month)
		{
		case 1:
		{
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 2: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 3: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 4: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 5: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 6: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 7: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 8: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 9: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 10: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 11: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 12: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		}
	}
	else
	{
		switch (month)
		{
		case 1:
		{
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 2: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 3: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 4: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 5: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 6: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 7: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 8: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 9: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 10: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 11: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		case 12: {
			if (temp == month)
			{
				for (int i = 0; i < temp - 1; i++)
				{
					sum1 += arr2[i];
				}
				sum = sum1 + day;
				break;
			}
			else
				temp++;
		}
		}
	}
	int arr3[4] = { 366,365,365,365 }; int count=0;
	for (int Year = 2000; Year <year; Year++) //2000 2001 
	{
		int yearr = Year%4;
		if (yearr == 0 && Year % 100 != 0 || Year % 400 == 0)
			count += arr3[0];
		switch (yearr)
		{
		case 0: count += 0; break;
		case 1: {count += arr3[yearr]; break; }
		case 2: {count += arr3[yearr]; break; }
		case 3: {count += arr3[yearr]; break; }
		}
		
	}
	int week = (count+sum )% 7;
	switch (week)// 星期一 星期二 星期三 星期四 星期五 星期六 星期天
	{
	case 1: {return "Saturday"; }
	case 2: {return "Sunday"; }
	case 3: {return "Monday"; }
	case 4: {return "Tuesday"; }
	case 5: {return "Wednesday"; }
	case 6: {return "Thursda"; }
	case 0: {return "Friday"; }
	}
}
int main()
{
	int y, m, d;
	cin >> y >> m >> d;
	CDate d0; d0.display();
	cout << endl;
	CDate d1(y, m, d); d1.display();
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值