定义一个满足下列条件的CDate类(vc++)
1.可以设置日期2.日期的输出格式为:日/月/年
3.可以进行在日期上加一天的运算
答案:你这个问题问问上已经有标准答案了
http://wenwen.zzzyk.com/z/q173513195.htm
这里的网友完善答案就是
唯一的不同是要把Date改为CDate
我已经帮你改好了
#include <iostream>
using namespace std;const int days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
class CDate
{
private:
int day;
int month;
int year;public:
CDate(int y=1900, int m=1, int d=1)
{
SetDate(y,m,d);
}void SetDate(int y, int m, int d);
void Print();
void IncrementDay();
bool LeapYear(int y);
bool EndOfMonth(int d);
};void CDate::SetDate(int y, int m, int d)
{
year=(y>0) ? y : 1900;
month=(m>=1 && m<=12) ? m : 1;
if (month==2 && LeapYear(y))
day=(day>=1 && day<=29) ? d : 1;
else
day=(d>=1 && d<=days[month])? d : 1;
}void CDate::Print()
{
cout<<"日期:\n年:"<<year<<" 月:"<<month<<" 日:"<<day<<endl;
}void CDate::IncrementDay()
{
# include "iostream"
# include "iomanip"
using namespace std;
class CDate
{private:
int year,month,day;
public:void set(int y,int m,int d);
bool isLeapYear()
{
return (year%4==0&&year%100!=0)||(year%400==0);}
friend CDate & operator++(CDate & a);
void print();};
void CDate::set(int y,int m,int d)
{
if(!(m<1||m>12))
{ month=m;
if(m==12||m==10||m==8||m==7||m==5||m==3||m==1)
{if(!(d<1||d>31))
day=d;}
else
{ if(!(d<1||d>30))
day=d;
else exit(1);}
}
else
exit(1);year=y;
}
void CDate::print()
{ cout<<day<<"/"<<month<<"/"<<year<<"/"<<endl;}
CDate & operator++(CDate & a)
{bool mend=0,yend=0;
switch(a.month)
{case 12: yend=a.day==31;break;
case 10: case 8: case 3:
case 1: mend=a.day==31;break;
case 2: mend=a.day==28+a.isLeapYear(); break;
case 4: case 6: case 9:
case 11: mend=a.day==30; break;}
yend?(a.day=1,a.month=1,a.year++):(mend?a.day=1,a.month++:a.day++);
return a;}
int main()
{ CDate d1;
d1.set(2001,2,28);
d1.print();
++d1;
d1.print();
}