#include<iostream>#include<math.h>using namespace std;class cDate_t{public:cDate_t();cDate_t(int y,int m,int d):year(y),month(m),day(d){} //構(gòu)造函數(shù)cDate_t operator+(int days) //實(shí)現(xiàn)對符號+的重載 {cDate_t d2;d2.day=this->day+days; //天數(shù)相加 d2.month=this->month; //月份暫且不變 d2.year=this->year; //年份暫且不變 }cDate_t operator-(int days) //實(shí)現(xiàn)對符號-的重載 {cDate_t d2;d2.day=abs(this->day-days);d2.month=this->month;d2.year=this->year;}int IsLeapYear(int y) //判斷這一年是不是閏年//判斷方法:一年能被4整除不能被100整出,能被400整除 {return(y%100!=0&&y%4==0)||(y%400==0);}void fd() //找到相加或相減之后的日期是什么時候 {cDate_t d0; if(IsLeapYear(d0.year)) //如果是閏年的話 {int d[]={31,29,31,30,31,30,31,31,30,31,30,31}; //2月份是29天 while(d0.day>d[d0.month-1]) //如果天數(shù)大于當(dāng)月的天數(shù) {d0.day-=d[d0.month-1]; //則天數(shù)要進(jìn)行做差d0.month++; //月份增加 if(d0.month<13){continue;}if(d0.month==13) //如果月份增加至13的話,則從第二年開始 {d0.month=1; //月份從第二年的1月份開始 d0.year+=1; //年份增加1 }if(d0.day<=d[d0.month-1]){break;}}}else{int d[]={31,28,31,30,31,30,31,31,30,31,30,31}; //若不是閏年的話,2月份就是28天 while(d0.day>d[d0.month-1]){d0.day-=d[d0.month-1];d0.month++;if(d0.month<13){continue;}if(d0.month==13){d0.month=1;d0.year+=1;}if(d0.day<=d[d0.month-1]){break;}}}cout<<"Year:"<<" "<<d0.year<<"Month:"<<" "<<d0.month<<"Day:"<<" "<<d0.day<<endl;} private:int year;int month;int day;}; int main(){cout<<"please input the date:"<<" "<<endl;int a,b,c;cin>>a>>b>>c;cDate_t dm(a,b,c);cDate_t dd;cout<<"please input how many days you want to plus:"<<" ";int m;cin>>m;dd=dm-m;dd.fd();return 0;}
c++求助大神,我這個代碼編譯通過了,但是運(yùn)行的時候又說源文件未編譯,其他的代碼又能運(yùn)行
慕工程4384412
2017-10-24 10:46:35