当前位置:编程学习 > VC++ >>

定义一个满足下列条件的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();
}

上一个:请教VC++编程的问题,懂的高手来
下一个:C# 与 vc++ 通信,数据类型转换

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,