您的位置:首页 > 其它

第17周 项目5 玩日期时间

2014-12-23 16:26 169 查看
问题及代码:
/*。
*Copyright(c)2014,烟台大学计算机学院
*All right reserved,
*文件名:test.cpp
*作者:liu_feng_zi_
*完成日期:2014年12月23日
*版本号:v1.0
*
问题描述:完成以下要求:
(1)输入一个时间点;
(2)输入是本年第几天;
(3)输出是这一天的第几秒;
(4)输出是这一年的第几秒;
(5)求输入一个天数后是哪年哪月哪日,并将结果保存在一个结构体中;
(6)求输入一个秒数后是哪年哪月哪日哪时哪分哪秒,并将结果保存在一个结构体中;
(7)输入两个时间点,求相差多少天,相差多少秒
*输入描述:
*程序输出:
*/
#include <iostream>
using namespace std;
int many1(int y,int m,int d);
int many2(int h,int m,int s);
int many3(int d,int s);
void many4(int y,int m,int d,int t);
void many5(int y,int mon,int d,int h,int minu,int s,int t);
void many6(int x,int y,int y1,int h1,int m1,int s1,int y2,int h2,int m2,int s2);
int main()
{
struct Time
{
int year;
int month;
int day;
int hour;
int minute;
int second;
} time1,time2,time3;
cout<<"请输入年、月、日、时、分、秒:"<<endl;
cin>>time1.year>>time1.month>>time1.day;
cin>>time1.hour>>time1.minute>>time1.second;
int days;
days=many1(time1.year,time1.month,time1.day);
cout<<"这是本年的第"<<days<<"天"<<endl;
int seconds;
seconds=many2(time1.hour,time1.minute,time1.second);
cout<<"这是本天的第"<<seconds<<"秒"<<endl;
int Yseconds;
Yseconds=many3(days,seconds);
cout<<"这是本年的第"<<Yseconds<<"秒"<<endl;
int day;
cout<<"请输入一个天数:";
cin>>day;
cout<<time1.year<<"年"<<time1.month<<"月"<<time1.day<<"日";
cout<<"的"<<day<<"天后是";
many4(time1.year,time1.month,time1.day,day);
int second;
cout<<"输入一个秒数:";
cin>>second;
cout<<time1.year<<"年"<<time1.month<<"月"<<time1.day<<"日";
cout<<time1.hour<<"时"<<time1.minute<<"分"<<time1.second<<"秒";
cout<<"的"<<second<<"秒后是";
many5(time1.year,time1.month,time1.day,time1.hour,time1.minute,time1.second,second);
int d1,d2;
cout<<"输入第一个时间点:";
cin>>time2.year>>time2.month>>time2.day;
cin>>time2.hour>>time2.minute>>time2.second;
cout<<"输入第二个时间点:";
cin>>time3.year>>time3.month>>time3.day;
cin>>time3.hour>>time3.minute>>time3.second;
d1=many1(time2.year,time2.month,time2.day);
d2=many1(time3.year,time3.month,time3.day);
many6(d1,d2,time2.year,time2.hour,time2.minute,time2.second,time3.year,time3.hour,time3.minute,time3.second);
return 0;
}
int many1(int y,int m,int d)
{
int i,sum=0;
for(i=1; i<m; i++)
{
if(i==4||i==6||i==9||i==11)
sum+=30;
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
sum+=31;
if(i==2)
{
if((y%4==0&&y%100!=0)||y%400==0)
sum+=29;
else
sum+=28;
}
}
sum+=d;
return sum;
}
int many2(int h,int m,int s)
{
int sum;
h*=3600;
m*=60;
sum=h+m+s;
return sum;
}
int many3(int d,int s)
{
int sum;
d=(d-1)*86400;
sum=d+s;
return sum;
}
void many6(int x,int y,int y1,int h1,int m1,int s1,int y2,int h2,int m2,int s2)
{
int d,m,n,t,s;
m=h1*36void many4(int y,int m,int d,int t)
{
struct Time
{
int year;
int month;
int day;
} time;
int i,r,n;
n=t/365;
r=t%365;
for(i=1; i<=n; i++)
{
if((y%4==0&&y%100!=0)||y%400==0)
r--;
y++;
}
if(r<0)
{
d+=r;
if(d<=0)
{
if(m==4||m==6||m==9||m==11)
d+=30;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
d+=31;
if(m==2)
{
if((y%4==0&&y%100!=0)||y%400==0)
d+=29;
else
d+=28;
}
m--;
}
time.year=y;
time.month=m;
time.day=d;
}
else
{
d+=r;
while((m!=2&&d>28)||(d>31))
{
m++;
if(m==13)
{
y++;
m=1;
}
if(m==4||m==6||m==9||m==11)
d-=30;
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
d-=31;
if(m==2)
{
if((y%4==0&&y%100!=0)||y%400==0)
d-=29;
else
d-=28;
}
time.year=y;
time.month=m;
time.day=d;
}
}
cout<<time.year<<"年"<<time.month<<"月"<<time.day<<"日"<<endl;
}
void many5(int y,int mon,int d,int h,int minu,int s,int t)
{
struct Time
{
int year;
int month;
int day;
int hour;
int minute;
int second;
} time;
int n,r,a,p;
t+=s;
s=0;
a=t/86400;
d+=a;
if(a!=0)
{
while((mon!=2&&d>28)||(d>31))
{
mon++;
if(mon==13)
{
y++;
mon=1;
}
if(mon==4||mon==6||mon==9||mon==11)
d-=30;
if(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)
d-=31;
if(mon==2)
{
if((y%4==0&&y%100!=0)||y%400==0)
d-=29;
else
d-=28;
}
}
}
p=t%86400;
r=p/3600;
h+=r;
n=p%3600;
r=n/60;
minu+=r;
r=n%60;
s+=r;
time.year=y;
time.month=mon;
time.day=d;
time.hour=h;
time.minute=minu;
time.second=s;
cout<<time.year<<"年"<<time.month<<"月"<<time.day<<"日";
cout<<time.hour<<"时"<<time.minute<<"分"<<time.second<<"秒"<<endl;
}
00+m1*60+s1;
n=h2*3600+m2*60+s2;
if(y1>y2)
{
t=(y1-y2)*365;
d=x-y+t;
}

else if (y1==y2)
{
if(x>=y)
d=x-y;
else
d=y-x;
}
else
{
t=(y2-y1)*365;
d=y-x+t;
}
if(d!=0)
s=m-n+d*86400;
else
{
if(m>=n)
s=m-n;
else
s=n-m;
}
cout<<"两时间点相差"<<s<<"秒"<<endl;
cout<<"两时间点相差"<<d<<"天"<<endl;
}


运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: