返回日期的星期信息 (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();
}