C++ 计算天数(从某年某月某日到某年某月某)

要求输入两个时间段,包括年,月,日,求两个时间段间隔的天数??如输入:2009年12月5日到2010年5月4日间隔的天数(C++)... 要求输入两个时间段,包括年,月,日,求两个时间段间隔的天数??如输入:2009年12月5日到2010年5月4日间隔的天数(C++) 展开
 我来答
魔尊8
2010-05-12 · TA获得超过1125个赞
知道小有建树答主
回答量:535
采纳率:0%
帮助的人:573万
展开全部
#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;
}

这个应该符合你的要求,参考下。
姗姗来迟12321
2010-05-12
知道答主
回答量:51
采纳率:0%
帮助的人:23.6万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式