问题遇到的现象和发生背景 返回日期的星期信息 (35 分)
定义一个日期类CData,其有数据成员year,month,day,函数成员有构造函数,析构函数,复制构造函数,显示日信息函数display(年月日星期).
函数Getweek是返回改日期是英文单词表示的星期几。从键盘读入一个日期,先显示21世纪的第一天日期的信息(已知2000年1月1号是星期六),然后再建立一个新日期的信息。
输入样例:
在这里给出一组输入。例如:
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, month, day;
public:
CDate(int y = 2000, int m = 1, int d = 1)
{
year = y;
month = m;
day = d;
}
string Getweek()
{
string Saturday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday;
int add = 0, add1;
add += (month - 1) * 30 + day;
if (month < 9) add += month / 2;
else add += (month + 1) / 2;
if (month > 2) {
add -= 2;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) add += 1;
}
add1 = (add - 1) % 7;
if (add1 == 0) return "Saturday";
else if (add1 == 1) return "Sunday";
else if (add1 == 2) return "Monday";
else if (add1 == 3) return "Tuesday";
else if (add1 == 4) return "Wednesday";
else if (add1 == 5) return "Thursday";
else if (add1 == 6) return "Friday";
}
void display() {
if (year == 2000 && month == 1 && day == 1) cout << "The first day of the 21st century:" << endl;
cout << year << "-" << month << "-" << day << ":" << CDate::Getweek();
}
};
int main()
{
int y,m,d;
cin>>y>>m>>d;
CDate d0; d0.display();
cout<<endl;
CDate d1(y,m,d); d1.display();
}