纪念日是哪天
程序员文章站
2024-03-20 09:50:04
...
“我们在一起99天是哪天呀?”
“说!今天是我们在一起多久了!”
“…”
源程序
直接初始化了原始日期,可自行更改。
可实现日期间的天数统计和数天的日期查询。
黑板程序
很久之前闲着没事写的。
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
int MonthDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
class Date
{ public:
Date(int a=3,int b=3,int c=2018);//初始日期是2018.3.3,构造函数 ;
void assign(int a,int b,int c);//赋值函数 ;
void display();//输出函数;
bool leap_year();//判断是否是闰年(布尔);
void increment(int n);//当前日期n天后的日期;
int accumulate(Date& t);
private:
int day;
int month;
int year;
};
int Date::accumulate(Date& t)
{ int sum,n1,n2;
n1=MonthDays[month]-day;
while(t.year>year)// 2个日期“年”是否相同
{ if(leap_year()==0)
MonthDays[2]=28;
else
MonthDays[2]=29;
for(int i=month;i<12;i++)
{ n1+=MonthDays[i+1];
}
year+=1;
month=0;
}
if(leap_year()==0) //在同一年;
MonthDays[2]=28;
else
MonthDays[2]=29;
if(t.month>month)//不在同一个月;
{
for(int i=month;i<t.month-1;i++)
{ n1+=MonthDays[i+1];
}
n1+=t.day;
}
else
n1=t.day-day;
return n1;
}
Date::Date(int a,int b,int c)//构造函数;
{ day=a;
month=b;
year=c;
}
void Date::assign(int a,int b,int c)//赋值函数;
{ day=a;
month=b;
year=c;
}
void Date::display()//输出函数;
{ cout<<year<<"/"<<month<<"/"<<day<<endl;
cout<<"========================"<<endl;
}
bool Date::leap_year() //函数判断是否是闰年;
{ return(year%4==0&&year%100!=0)||(year%400==0);//闰年的判断条件;
}
void Date::increment(int n) //函数,计算n天后的日期 ;
{
while(n>=31)//加的天数大于一个月 ;
{
if(leap_year()==0)//不是闰年 ;
{ MonthDays[2]=28;
n=n-MonthDays[month];
month+=1;
if(month>12)
{month=month-12;
year+=1;}
}
else//是闰年 ;
{if(month<3)
MonthDays[2]=29;
n=n-MonthDays[month];
month+=1;
if(month>12)
{month=month-12;
year+=1;}
}
}
if(leap_year()==0)
{ MonthDays[2]=28;
day=day+n;
if(day>MonthDays[month])
{day=day-MonthDays[month];
month+=1;
if(month>12)
{month=month-12;
year+=1;}
}
}
else
{ if(month<3)
MonthDays[2]=29;
day=day+n;
if(day>MonthDays[month])
{day=day-MonthDays[month];
month+=1;
if(month>12)
{month=month-12;
year+=1;}
}
} }
int main()
{
int n,a1,b1,c1,a2,b2,c2,a;
/*date1.display();//输出初始化;
date2.display();//输出2018.3.3 ;*/
cout<<"亲爱的用户您好,现在默认的日期是2018.3.3"<<endl<<endl<<endl<<endl<<endl;
char m='y';
while(m=='y')
{ Date date1, date2(3,3,2018),date3,date4;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl<<endl;
cout<<"1.求相隔天数 2.求加n天后的日期"<<endl<<endl;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl<<endl<<endl;
cout<<"请选择要执行的任务:";cin>>a;
if(a==1)
{
cout<<"请输入另一个日期:(年/月/日)"<<endl;
cin>>a2>>b2>>c2;//输入另一个日期;
date4.assign(c2,b2,a2);
cout<<"------------------------"<<endl;
cout<<"相隔的天数是:";
cout<<date2.accumulate(date4)<<endl;//计算之间的天数;
cout<<"========================"<<endl;}
if(a==2)
{
cout<<"请输入初始日期:(年/月/日)"<<endl;
cin>>a1>>b1>>c1;//输入一个日期;
date3.assign(c1,b1,a1);
cout<<"------------------------"<<endl;
cout<<"请输入天数:"<<endl;
cin>>n;//输入一个天数;
date3.increment(n);//计算该天数之后的日期;
cout<<"累加后的日期是:(年/月/日)"<<endl;
date3.display();//显示该天数之后的日期;
}
cout<<"★★★★★★★★★★★★"<<endl;
cout<<"========================"<<endl;
cout<<"是否继续输入?(y/n)"<<endl;
cin>>m;
}
return 0;
}
上一篇: 二分查找算法的思路及代码实现