最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C++實(shí)現(xiàn)簡(jiǎn)單日期計(jì)算器

 更新時(shí)間:2020年05月18日 09:03:36   作者:pigdwh  
這篇文章主要介紹了基于C++實(shí)現(xiàn)簡(jiǎn)單日期計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

基于C++編寫(xiě)的簡(jiǎn)單的日期計(jì)算器,供大家參考,具體內(nèi)容如下

以下代碼是在VS2013下編譯運(yùn)行的:

下面展示我的測(cè)試結(jié)果:

標(biāo)題

代碼如下:

#include<iostream>
using namespace std;
#include"vld.h"http://這個(gè)是檢測(cè)虛擬內(nèi)存是否泄露,我在這里安裝了vld,所以直接用,包含頭文件就好了
 
class Date
{
public:
 //構(gòu)造函數(shù)
 Date(int year=2018, int month=8, int day=16)
 {
 _year = year;
 _month = month;
 _day = day;
 }
 //析構(gòu)函數(shù)
 ~Date()
 {
 
 }
 //拷貝構(gòu)造函數(shù)
 Date(const Date& d)//必須傳引用,傳值會(huì)引發(fā)無(wú)窮遞歸調(diào)用
 {
 _year = d._year;
 _month = d._month;
 _day = d._day;
 }
 //賦值重載
 Date& operator=(const Date& d)
 {
 if (this != &d)
 {
  this->_year = d._year;
  this->_month = d._month;
  this->_day = d._day;
 }
 return *this;
 }
 //打印輸出
 void showDate()
 {
 cout << "原來(lái)的日期:" << _year << "-" << _month << "-" << _day << endl;
 }
 
 void showDate1()
 {
 cout << "加上指定天數(shù):" << _year << "-" << _month << "-" << _day<<endl;
 }
 void showDate2()
 {
 cout << "減去指定天數(shù):" << _year << "-" << _month << "-" << _day << endl;
 }
 
 void showDate3()
 {
 cout << "加等指定天數(shù):" << _year << "-" << _month << "-" << _day << endl;
 }
 
 void showDate4()
 {
 cout << "減等指定天數(shù):" << _year << "-" << _month << "-" << _day << endl;
 }
 void showDate5()
 {
 cout << "前置++:" << _year << "-" << _month << "-" << _day << endl;
 }
 void showDate6()
 {
 cout << "后置++:" << _year << "-" << _month << "-" << _day << endl;
 }
 void showDate7()
 {
 cout << "前置--:" << _year << "-" << _month << "-" << _day << endl;
 }
 void showDate8()
 {
 cout << "后置--:" << _year << "-" << _month << "-" << _day << endl;
 }
 void showDate9()
 {
 cout << "要比較的日期:" << _year << "-" << _month << "-" << _day << endl;
 }
 
 bool operator ==(const Date& d)//判斷兩個(gè)日期相等
 {
 return _year == d._year
  &&_month == d._month
  &&_day == d._day;
 }
 bool operator !=(const Date& d)//判斷兩個(gè)日期不相等
 {
 return !(*this == d);
 }
 bool operator>(const Date& d) // > 
 {
 if ((_year > d._year) || (_year ==d._year&&_month > d._month) || (_year ==d._year&&_month == d._month&&_day > d._day))
 {
  return true;
 }
 return false;
 }
 bool operator>=(const Date& d)// >= 
 {
 return ((*this == d) || *this > d);
 }
 bool operator<(const Date& d) // <
 {
 if ((_year <d._year) || (_year ==d._year&&_month <d._month) || (_year == d._year&&_month ==d._month&&_day < d._day))
 {
  return true;
 }
 return false;
 }
 bool operator<=(const Date& d) //<=
 {
 return ((*this == d) || *this > d);
 }
 
 //是否是潤(rùn)年
 bool IsLeapYear(int year)
 {
 return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
 }
 
 int GetDayByYearAndMonth(int year, int month)//判斷返回的月份的天數(shù)
 {
 int MonthDay[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 if (IsLeapYear(year) && month == 2)
 {
  return 29;
 }
 else{
  return MonthDay[month];
 }
 }
 
 
 //日期加上天數(shù),并不會(huì)改變?cè)瓉?lái)的日期值
 Date operator+(int dayNum)
 {
 if (_day<0)
 {
  return *this -(-_day);
 }
 Date tmpDate(*this);//拷貝this指針
 tmpDate._day += dayNum;
 while (tmpDate._day > GetDayByYearAndMonth(_year, _month))
 {
  tmpDate._day = tmpDate._day -GetDayByYearAndMonth(tmpDate._year,tmpDate._month);
  tmpDate._month += 1;
  if (tmpDate._month > 12)
  {
  ++tmpDate._year;
  tmpDate._month = 1;
  }
 }
 return tmpDate;
 
 }
 Date& operator+=(int days)// +=,會(huì)改變?cè)瓉?lái)的值,進(jìn)而在原來(lái)的值上面繼續(xù)加指定的天數(shù)
 {
 _day += days;
 while (_day > GetDayByYearAndMonth(_year, _month))
 {
  _day =_day - GetDayByYearAndMonth(_year,_month);
  _month += 1;
  if (_month > 12)
  {
  ++_year;
  _month = 1;
  }
 }
 return *this;
 }
 Date& operator++() //前置++
 {
 *this += 1;
 return *this;
 }
 Date operator++(int)//后置++ 
 {
 Date tmpDate(*this);
 *this += 1;
 return *this;
 }
 //日期減去天數(shù),并不會(huì)改變?cè)瓉?lái)的日期值
 Date operator-(int dayNum)
 {
  Date tmpDate(*this);
  tmpDate._day -= dayNum;
  while (tmpDate._day <0)
  {
  tmpDate._month -= 1;
  if (tmpDate._month <= 0)
  {
   --tmpDate._year;
   tmpDate._month = 12;
  }
  tmpDate._day += GetDayByYearAndMonth(tmpDate._year,tmpDate._month) ;
  }
  return tmpDate;
 }
 Date& operator-=(int dayNum)//-=,會(huì)改變?cè)瓉?lái)的值,進(jìn)而在原來(lái)的值上面繼續(xù)減指定的天數(shù)
 {
  _day -= dayNum;
  while (_day <0)
  {
  _month -= 1;
  if (_month <= 0)
  {
   --_year;
   _month = 12;
  }
  _day += GetDayByYearAndMonth(_year,_month);
  }
  return *this;
 }
 Date& operator--()//前置– 
 {
  *this -= 1;
  return *this;
 }
 Date operator--(int)//后置 –
 {
  Date tmpDate(*this);//先對(duì)*this進(jìn)行拷貝
  *this -= 1;
  return *this;
 }
 int operator-( const Date& d) // 兩個(gè)日期相隔天數(shù) 
 {
  Date big(*this);
  Date small(d);
  int day = 0;
  int flags = 1;
  if (big <small)
  {
  small = *this;
  big = d;
  flags *= -1;
  }
  
  while (small != big)
  {
  small =small+1;
  ++day;
  }
  
  return day*flags;
 }
 
 
 
 
 
private://私有成員變量
 int _year;
 int _month;
 int _day;
};
 
 
int main()
{
 Date d1(2018,1,1);
 d1.showDate();
 Date d2;
 d2 = d1 + 66;
 d2.showDate1();
 d2 = d1 + 1;
 d2.showDate1();
 Date d3;
 d3 = d1 - 20;
 d3.showDate2();
 Date d4;
 d4+=10;
 d4.showDate3();
 d4 += 10;
 d4.showDate3();
 Date d5;
 d5 -= 10;
 d5.showDate4();
 d5-= 10;
 d5.showDate4();
 
 Date d6;
 ++d6;
 d6.showDate5();
 Date d7;
 d7++;
 d7.showDate6();
 
 Date d8;
 d8--;
 d8.showDate7();
 Date d9;
 d9--;
 d9.showDate8();
 
 Date d10(2018, 8, 18);
 d10.showDate9();
 cout << "(d1 < d10):是否小于(1:表示小于 0表示:大于等于):"<<(d1 < d10) << endl;
 
 Date d11(2018,1,1);
 d11.showDate9();
 cout <<"(d1 > d10):是否大于(1:表示大于 0表示小于等于)"<< (d1 > d10) << endl;
 Date d12(2018,8,18);
 d12.showDate9();
 cout <<"(d1 >= d10):是否大于等于(0:表示小于 1表示:大于等于)"<< (d1 >= d10) << endl;
 Date d13(2018,10,1);
 d13.showDate9();
 cout <<"(d1 <= d10):是否小于等于(1:表示小于等于 0表示:大于)"<< (d1 <= d10) << endl;
 Date d14(2018,1,2);
 d14.showDate();
 cout << "兩個(gè)日期相距天數(shù):" <<(d1-d14) << endl;
 system("pause");
 return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)

    全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)

    本篇文章是對(duì)全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 基于Matlab實(shí)現(xiàn)中國(guó)象棋的示例代碼

    基于Matlab實(shí)現(xiàn)中國(guó)象棋的示例代碼

    中國(guó)象棋是起源于中國(guó)的一種棋,屬于二人對(duì)抗性游戲的一種,在中國(guó)有著悠久的歷史。由于用具簡(jiǎn)單,趣味性強(qiáng),成為流行極為廣泛的棋藝活動(dòng)。本文將利用Matlab實(shí)現(xiàn)這一游戲,需要的可以參考一下
    2022-02-02
  • OpenCV去除綠幕摳圖源碼

    OpenCV去除綠幕摳圖源碼

    這篇文章主要介紹了OpenCV去除綠幕摳圖,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 淺析stl序列容器(map和set)的仿函數(shù)排序

    淺析stl序列容器(map和set)的仿函數(shù)排序

    有序的stl容器在工程中應(yīng)用什么方便和廣泛,但是當(dāng)我們需要自己的排序的時(shí)候,可以用仿函數(shù)來(lái)設(shè)置它
    2013-09-09
  • 詳解C語(yǔ)言中write函數(shù)

    詳解C語(yǔ)言中write函數(shù)

    write函數(shù),是一個(gè)C語(yǔ)言函數(shù),功能為將數(shù)據(jù)寫(xiě)入已打開(kāi)的文件內(nèi),這篇文章主要介紹了C語(yǔ)言中write函數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • C++中的while循環(huán)和for循環(huán)語(yǔ)句學(xué)習(xí)教程

    C++中的while循環(huán)和for循環(huán)語(yǔ)句學(xué)習(xí)教程

    這篇文章主要介紹了C++中的while循環(huán)和for循環(huán)語(yǔ)句學(xué)習(xí)教程,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C++?ffmpeg實(shí)現(xiàn)將視頻幀轉(zhuǎn)換成jpg或png等圖片

    C++?ffmpeg實(shí)現(xiàn)將視頻幀轉(zhuǎn)換成jpg或png等圖片

    有時(shí)播放實(shí)時(shí)流的時(shí)候有截圖的需求,需要將解碼出來(lái)的圖片保存本地或上傳服務(wù)器,這時(shí)就需要將avframe中的數(shù)據(jù)編碼成png、jpg等格式的圖片,我們使用ffmpeg的相關(guān)編碼器就可以實(shí)現(xiàn)功能,下面就來(lái)講講具體實(shí)現(xiàn)方法吧
    2023-03-03
  • C++中vector的用法實(shí)例解析

    C++中vector的用法實(shí)例解析

    這篇文章主要介紹了C++中vector的用法,詳細(xì)描述了vector的各種常見(jiàn)的用法及注意事項(xiàng),需要的朋友可以參考下
    2014-08-08
  • C++初階教程之類和對(duì)象

    C++初階教程之類和對(duì)象

    C++是面向?qū)ο缶幊痰?這也是C++與C語(yǔ)言的最大區(qū)別,而類和對(duì)象就是C++面向?qū)ο蟮幕A(chǔ),下面這篇文章主要給大家介紹了關(guān)于C++初階教程之類和對(duì)象的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • C++ 中Vector常用基本操作

    C++ 中Vector常用基本操作

    標(biāo)準(zhǔn)庫(kù)vector類型是C++中使用較多的一種類模板,本文給大家分享C++ 中Vector常用基本操作,感興趣的朋友一起看看吧
    2017-10-10

最新評(píng)論

莲花县| 图木舒克市| 治县。| 宜城市| 繁昌县| 柳江县| 宜阳县| 象山县| 绥芬河市| 资兴市| 湛江市| 黔江区| 砀山县| 赤峰市| 安吉县| 南京市| 桑日县| 定兴县| 博兴县| 锦屏县| 治县。| 余江县| 锦屏县| 融水| 抚顺县| 女性| 壶关县| 英超| 杭锦旗| 佳木斯市| 璧山县| 昆明市| 兰坪| 措美县| 舟山市| 孝昌县| 蒙阴县| 梧州市| 大同市| 新竹市| 阿拉善右旗|