技术学习C++C++问题 B: C++类与对象——日期类
Ramsayi题目描述
设计一个日期类 Date,要求数据成员为私有,成员函数为公有,其中 setDate()用来设置日期,Rise()用来实现日期增加一天,Print()用来输出日期等。设计一个友元函数 Equal()用来比较两个日期是否相等。主函数内定义相关对象,验证各个函数。
输入
共有两行,每行三个正整数,中间用空格隔开,代表两个日期。其中三个正整数分别对应年、月、日。
输出
共有三行,第一行输出两个日期是否相等的结果,相等输出 True,不等输出 False。第二行输出三个正整数,中间用空格隔开,代表第一个日期增加一天后的结果。第三行输出三个正整数,中间用空格隔开,代表第二个日期增加一天后的结果。三个正整数依次代表年、月、日,每行结尾输出换行。
样例输入
样例输出
1 2 3
| False 2000 2 29 1996 4 1
|
提示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include<iostream> using namespace std; class Date{ int y,m,d; int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}; public: void setDate(){ cin>>y>>m>>d; } void Rise(){ if(y%4==0&&y%100!=0||y%400==0) days[1]=29; if(m==12&&days[m-1]==d) y++,m=1,d=1; else if(days[m-1]==d) m++,d=1; else d++; } void Print(){ cout<<y<<' '<<m<<' '<<d<<endl; } friend void Equal(Date m,Date n); }; void Equal(Date a,Date b){ if(a.y==b.y&&a.m==b.m&&a.d==b.d) cout<<"True"<<endl; else cout<<"False"<<endl; } int main(){ Date a,b; a.setDate(); b.setDate(); Equal(a,b); a.Rise(); a.Print(); b.Rise(); b.Print(); return 0; }
|