问题及代码
/*
*ALL rights reserved.
*文件名称:shibazhouxiangmu5(2)
*作者:李长鸿
*完成时间:2014.12.23
*问题描述:多少秒后的时间
*/
#include <iostream>
using namespace std;
void W(int,int,int,int,int,int);
int days(int,int,int);
void F(int,int);
bool R(int);
int T();
struct Date
{
int year;
int mouth;
int day;
int hour;
int minute;
int second;
} date1 ,date2,date;
int d[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31},dy;
int main()
{
cout<<"请依次输入年,月,日,时,分,秒:"<<endl;
cin>>date1.year>>date1.mouth>>date1.day>>date1.hour>>date1.minute>>date1.second;
W(date1.year,date1.mouth,date1.day,date1.hour,date1.minute,date1.second);
date=date1;
out();
int U;
U=T();
F(dy,U);
date2=date;
cout<<"您想知道的日期是:"<<date.year<<"年"<<date.mouth<<"月"<<date.day<<"日"<<date.hour<<"时"<<date.minute<<"分"<<date.second<<"秒"<<endl;
return 0;
}
void W(int y,int m,int t,int h,int f,int s)
{
while(m>12||m<0||t>d[m]||t<0||(m==2&&t>29)||h>24||h<0||f>60||f<0||s>60||s<0)
{
cout<<"输入有误,请再次输入正确的日期:"<<endl;
cin>>y>>m>>t>>h>>f>>s;
}
}
void out()
{
int seconds;
dy=days(date.year,date.mouth,date.day);
seconds=date.hour*3600+date.minute*60+date.second;
cout<<date.year<<"年"<<date.mouth<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<dy<<"天"<<endl;
cout<<"这是这一天的第:"<<seconds<<"秒"<<endl;
cout<<"这是这一年的第:"<<dy*24*3600+seconds<<"秒"<<endl;
cout<<"输入你想知道的你原先输入的时间多少秒后的日期:"<<endl;
}
bool R(int x)
{
if((x%4==0&&x%100!=0)||(x%400==0))
return 1;
else return 0;
}
int days(int a,int b,int c)
{
int days=0,i;
for(i=1; i<b; i++)
days=days+d[i];
days=days+c;
if(R(a)&&b>2)
days=days+1;
return days;
}
int T()
{
int b,S,M,H;
cin>>S;
S=S+date.second;
M=date.minute+S/60;
H=(M/60+date.hour)/24+date.hour;
date.second=S%60;
date.minute=M%60;
date.hour=(M/60+date.hour)%24;
b=S/(3600*60)+H/24;
return b;
}
void F(int dy,int b)
{
int a;
a=365-dy;
if(R(date.year))
a+=1;
if(b<d[date.mouth]-date.day)
date.day=date.day+b;
else
{
int i;
if(b>a)
{
date.mouth=1;
date.year+=1;
b=b-a;
while(b>364)
{
if(R(date.year))
if(b>365)
{
date.year+=1;
b-=366;
}
else break;
else if(b>364)
{
date.year+=1;
b-=365;
}
else break;
}
}
else
{
b=b-d[date.mouth]+date.day;
date.mouth+=1;
}
for(i=date.mouth; b>d[i]; i++)
{
date.mouth++;
b=b-d[i];
}
date.day=b;
}
总结:。。。。。。。。。。。。程序语言绝对不是人!!