C++ 计算天数(从某年某月某日到某年某月某)
要求输入两个时间段,包括年,月,日,求两个时间段间隔的天数??如输入:2009年12月5日到2010年5月4日间隔的天数(C++)...
要求输入两个时间段,包括年,月,日,求两个时间段间隔的天数??如输入:2009年12月5日到2010年5月4日间隔的天数(C++)
展开
2个回答
展开全部
#include<iostream.h>
class date
{
public:
date(){}
void set(int p1,int p2,int p3)
{
year=p1;month=p2;day=p3;
}
int year,month,day;
};
int a[]={31,28,31,30,31,30,31,31,30,31,30,31},*p1,*p2,*p3,i=1,k=0;
int main()
{
int days(date k);
date m,n;
int p1,p2,p3;
cout<<"请依次输入年·月·日:"<<endl;
cin>>p1>>p2>>p3;
if(p1%4==0&&p1%100!=0||p1%400==0)
a[1]=29;
if(p2>12||p3>a[p2-1])
cout<<"您的输入有误!"<<endl;
else m.set(p1,p2,p3);
cout<<"这天是该年的第"<<days(m)<<"天。"<<endl;
cout<<"请依次输入年·月·日:"<<endl;
cin>>p1>>p2>>p3;
if(p1%4==0&&p1%100!=0||p1%400==0)
a[1]=29;
if(p2>12||p3>a[p2-1])
cout<<"您的输入有误!"<<endl;
else n.set(p1,p2,p3);
cout<<"这天是该年的第"<<days(n)<<"天。"<<endl;
cout<<"这之间相隔"<<days(n)-days(m)<<"天."<<endl;
return 0;
}
int days(date k)
{int i,c=0;
for(i=0;i<k.month-1;i++)
c+=a[i];
c+=k.day;
return c;
}
这个应该符合你的要求,参考下。
class date
{
public:
date(){}
void set(int p1,int p2,int p3)
{
year=p1;month=p2;day=p3;
}
int year,month,day;
};
int a[]={31,28,31,30,31,30,31,31,30,31,30,31},*p1,*p2,*p3,i=1,k=0;
int main()
{
int days(date k);
date m,n;
int p1,p2,p3;
cout<<"请依次输入年·月·日:"<<endl;
cin>>p1>>p2>>p3;
if(p1%4==0&&p1%100!=0||p1%400==0)
a[1]=29;
if(p2>12||p3>a[p2-1])
cout<<"您的输入有误!"<<endl;
else m.set(p1,p2,p3);
cout<<"这天是该年的第"<<days(m)<<"天。"<<endl;
cout<<"请依次输入年·月·日:"<<endl;
cin>>p1>>p2>>p3;
if(p1%4==0&&p1%100!=0||p1%400==0)
a[1]=29;
if(p2>12||p3>a[p2-1])
cout<<"您的输入有误!"<<endl;
else n.set(p1,p2,p3);
cout<<"这天是该年的第"<<days(n)<<"天。"<<endl;
cout<<"这之间相隔"<<days(n)-days(m)<<"天."<<endl;
return 0;
}
int days(date k)
{int i,c=0;
for(i=0;i<k.month-1;i++)
c+=a[i];
c+=k.day;
return c;
}
这个应该符合你的要求,参考下。
展开全部
#include<iostream>
using namespace std;
//************************************************
int past_days(int,int,int);
//一年过去了多少天,用于年份较大的年的计算
int future_days(int,int,int);
//一年还有多少天,用于年份较小的年的计算
int year(int y1,int y2);
//两个年份之间差多少个整年
//*************************************************
void main()
{
int y1;
int y2;
int m1;
int m2;
int d1;
int d2;
cout<<"请输入第一个年月日"<<endl;
cin>>y1>>m1>>d1;
cout<<"请输入第二个年月日"<<endl;
cin>>y2>>m2>>d2;
cout<<endl;
if(y1>y2)
{
cout<<y2<<"年"<<m2<<"月"<<d2<<"日到"<<y1<<"年"<<m1<<"月"<<d1<<"日是"<<endl;
cout<<future_days(y2,m2,d2)+past_days(y1,m1,d1)+year(y2,y1)<<"天"<<endl;
}
if(y1==y2)
{
{
if(past_days(y1,m1,d1)>past_days(y2,m2,d2))
{
cout<<y2<<"年"<<m2<<"月"<<d2<<"日到"<<y1<<"年"<<m1<<"月"<<d1<<"日是"<<endl;
cout<<past_days(y1,m1,d1)-past_days(y2,m2,d2)<<"天"<<endl;
}
else
{
cout<<y1<<"年"<<m1<<"月"<<d1<<"日到"<<y2<<"年"<<m2<<"月"<<d2<<"日是"<<endl;
cout<<past_days(y2,m2,d2)-past_days(y1,m1,d1)<<"天"<<endl;
}
}
}
if(y1<y2)
{
cout<<y1<<"年"<<m1<<"月"<<d1<<"日到"<<y2<<"年"<<m2<<"月"<<d2<<"日是"<<endl;
cout<<future_days(y1,m1,d1)+past_days(y2,m2,d2)+year(y1,y2)<<"天"<<endl;
}
}
//*****************************************************
int future_days(int y,int m,int d)
{
int days=0;
days=past_days(y,m,d);
int year_flag;
{
if(y%4==0&&y%100!=0||y%400==0)
{
year_flag=1;
}
else
year_flag=0;
}
{
if(year_flag)
days=366-days;
else
days=365-days;
}
return days;
}
//******************************************************
int past_days(int yy,int mm,int dd)
{
int days;
int year_flag;
{
if(yy%4==0&&yy%100!=0||yy%400==0)
{
year_flag=1;
}
else
year_flag=0;
}
{
if(1==mm)
days=dd;
if(2==mm)
days=31+dd;
if(3==mm)
days=60+dd;
if(4==mm)
days=91+dd;
if(5==mm)
days=121+dd;
if(6==mm)
days=152+dd;
if(7==mm)
days=182+dd;
if(8==mm)
days=213+dd;
if(9==mm)
days=244+dd;
if(10==mm)
days=274+dd;
if(11==mm)
days=305+dd;
if(12==mm)
days=335+dd;
}
if(!year_flag)
days=days-1;
return days;
}
//***************************************************************
int year(int y1,int y2)
{
int i=0;
int year_flag;
for(int y=y1+1;y<y2;y++)
{
{
{
if(y%4==0&&y%100!=0||y%400==0)
{
year_flag=1;
}
else
year_flag=0;
}
}
{
if(year_flag)
i=i+366;
else
i=i+365;
}
}
return i;
}
using namespace std;
//************************************************
int past_days(int,int,int);
//一年过去了多少天,用于年份较大的年的计算
int future_days(int,int,int);
//一年还有多少天,用于年份较小的年的计算
int year(int y1,int y2);
//两个年份之间差多少个整年
//*************************************************
void main()
{
int y1;
int y2;
int m1;
int m2;
int d1;
int d2;
cout<<"请输入第一个年月日"<<endl;
cin>>y1>>m1>>d1;
cout<<"请输入第二个年月日"<<endl;
cin>>y2>>m2>>d2;
cout<<endl;
if(y1>y2)
{
cout<<y2<<"年"<<m2<<"月"<<d2<<"日到"<<y1<<"年"<<m1<<"月"<<d1<<"日是"<<endl;
cout<<future_days(y2,m2,d2)+past_days(y1,m1,d1)+year(y2,y1)<<"天"<<endl;
}
if(y1==y2)
{
{
if(past_days(y1,m1,d1)>past_days(y2,m2,d2))
{
cout<<y2<<"年"<<m2<<"月"<<d2<<"日到"<<y1<<"年"<<m1<<"月"<<d1<<"日是"<<endl;
cout<<past_days(y1,m1,d1)-past_days(y2,m2,d2)<<"天"<<endl;
}
else
{
cout<<y1<<"年"<<m1<<"月"<<d1<<"日到"<<y2<<"年"<<m2<<"月"<<d2<<"日是"<<endl;
cout<<past_days(y2,m2,d2)-past_days(y1,m1,d1)<<"天"<<endl;
}
}
}
if(y1<y2)
{
cout<<y1<<"年"<<m1<<"月"<<d1<<"日到"<<y2<<"年"<<m2<<"月"<<d2<<"日是"<<endl;
cout<<future_days(y1,m1,d1)+past_days(y2,m2,d2)+year(y1,y2)<<"天"<<endl;
}
}
//*****************************************************
int future_days(int y,int m,int d)
{
int days=0;
days=past_days(y,m,d);
int year_flag;
{
if(y%4==0&&y%100!=0||y%400==0)
{
year_flag=1;
}
else
year_flag=0;
}
{
if(year_flag)
days=366-days;
else
days=365-days;
}
return days;
}
//******************************************************
int past_days(int yy,int mm,int dd)
{
int days;
int year_flag;
{
if(yy%4==0&&yy%100!=0||yy%400==0)
{
year_flag=1;
}
else
year_flag=0;
}
{
if(1==mm)
days=dd;
if(2==mm)
days=31+dd;
if(3==mm)
days=60+dd;
if(4==mm)
days=91+dd;
if(5==mm)
days=121+dd;
if(6==mm)
days=152+dd;
if(7==mm)
days=182+dd;
if(8==mm)
days=213+dd;
if(9==mm)
days=244+dd;
if(10==mm)
days=274+dd;
if(11==mm)
days=305+dd;
if(12==mm)
days=335+dd;
}
if(!year_flag)
days=days-1;
return days;
}
//***************************************************************
int year(int y1,int y2)
{
int i=0;
int year_flag;
for(int y=y1+1;y<y2;y++)
{
{
{
if(y%4==0&&y%100!=0||y%400==0)
{
year_flag=1;
}
else
year_flag=0;
}
}
{
if(year_flag)
i=i+366;
else
i=i+365;
}
}
return i;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询