文章目录
实验要求源代码输出结果:
实验要求
二、实验内容 设计一个日期类Date,包括年、月、日等私有数据成员。要求实现日期的基本运算,如某日期加上天数、某日期减去天数、两日期相差的天数等。 三、实验要求 在Date类中设计如下重载运算符函数: Date operator+(int days):返回某日期加上天数得到的日期 Date operator-(int days):返回某日期减去天数得到的日期 int operator-(Date&b):返回两日期相差的天数 在实现这些重载运算符函数时调用以下私有成员函数: leap(int):判断指定的年份是否为闰年
源代码
//Date.h
#pragma once
#include
using namespace std;
class Date
{
int year;
int month;
int day;
int leap(int);
int md2d(int leap, int month, int day);
public:
Date(int y, int m, int d);
Date();
friend ostream& operator {31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31} };
int Date::leap(int y)
{
return (y % 4 == 0 && y % 100 != 0 || y % 400 == 0);
}
int Date::md2d(int leap, int month, int day)
{
for (int i = month-2; i >= 0; i--)
{
day += day_tab[leap][i];
}
return day;
}
Date::Date(int y, int m, int d)
{
year = y; month = m; day = d;
}
Date::Date()
{
cout year;
cout month;
cout day;
}
Date Date::operator+(int days)
{
days += md2d(leap(year), month, day);
//0
y--;
days += y2d(y);
}
//d2md
int m = 1;
int d1;
while ((d1 = days - day_tab[leap(y)][m - 1]) > 0)
{
days = d1;
m++;
}
Date dt(y, m, days);
return dt;
}
Date Date::operator-(int days)
{
return *this + (-days);
}
int Date::operator-(Date& b)
{
int d1 = md2d(leap(year), month, day);
int d2 = md2d(leap(b.year), b.month, b.day);
int ds = d1 - d2;
int y1 = year;
int y2 = b.year;
while (y1 > y2)
{
y1--;
ds += y2d(y1);
}
while (y1
os
Date d1;
int day;
cout day;
Date d2 = d1 - day;
cout
cout |