- 实现日期
//显示日期类
class Date
{
private:
int year;
int month;
int day;
bool tag;
bool Is_Leap(int year)//判断是否为闰年
{
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int Get_YM_Day(int year, int month)
{
static int day[] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 };
// 0 1 2 3 4 5 6 7 8 9 10 11 12
if (month == 2 && Is_Leap(year))
{
month = 0;
}
return day[month];
}
public:
void Showdate() const
{
if (tag)
{
cout << "year: " << year << " month: " << month << " day:" << day << endl;
}
else
{
cout << "date is error" << endl;
}
}
public:
Date(int y = 1, int m = 1,int d = 1):year(y),month(m),day(d),tag(true)
{
if (y < 1 || m < 1 || m>12 || d < 1 || d > Get_YM_Day(year,month))
{
tag = false;
}
}
};
int main()
{
Date d1(2022, 2, 31);
d1.Showdate();
Date d2(2022, 6, 26);
d2.Showdate();
return 0;
}
运行结果:
2. 实现栈
class Mystack
{
private:
enum{STACK_INIT_SIZE=10,STACK_INC_SIZE=2};
int* _data;//指向连续空间
int _capa;//容量大小
int _top;//栈顶指针,初始化为-1
public:
Mystack() :_data(nullptr), _capa(STACK_INIT_SIZE), _top(-1)//缺省的构造函数
{
_data = new int[_capa];
}
Mystack(int sz) :_data(nullptr), _capa(sz), _top(-1)//带参的构造函数
{
_data = new int[_capa];
}
~Mystack() //析构函数
{
delete[]_data;
_data = nullptr;
_capa = 0;
_top = -1;
}
size_t Size()//元素个数
{
return _top + 1;//初始化给的是-1,因此当前_top+1
}
bool Empty() //判空
{
//return _top == -1;
return Size() == 0;
}
bool Full() //判满
{
return Size() == _capa;
}
bool Push(int val) //入栈
{
if (Full())
{
return false;
}
else
{
_top = _top + 1;//_top++
_data[_top] = val;
//_data[++_top]=val;
return true;
}
}
int &Top()//取栈顶元素
{
return _data[_top];
}
const int& Top() const
{
return _data[_top];
}
bool Pop()//出栈
{
if (Empty())return false;
_top = _top - 1;
return true;
}
bool GetPop(int& val)//取栈顶和出栈一起
{
if (Empty())
{
return false;
}
else
{
val = _data[_top];
_top -= 1;
return true;
}
}
};
int main()
{
Mystack mys;
for (int i = 0; i < 10; ++i)//入栈
{
cout << "Push" << i << " " << mys.Push(i) << endl;
}
/*while (!mys.Empty())
{
int x = mys.Top();
mys.Pop();
cout << x << endl;
}*/
int val;
while (mys.GetPop(val))
{
cout << val << endl;
}
return 0;
}
运行结果: