纪念日是哪天

“我们在一起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;  

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值