问题及代码
/*
*ALL rights reserved.
*文件名称:shibazhouxiangmu5(1)
*作者:李长鸿
*完成时间:2014.12.23
06.*问题描述:万年历
*/
#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);
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};
int main()
{
long seconds,dy;
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;
dy=days(date.year,date.mouth,date.day);
seconds=date1.hour*3600+date1.minute*60+date1.second;
cout<<date.year<<"年"<<date.mouth<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<dy<<"天"<<endl;
cout<<"这是这一天的第:"<<seconds<<"秒"<<endl;
cout<<"这是这一年的第:"<<dy*24*3600+seconds<<"秒"<<endl;
int a,b;
cout<<"输入你想知道的你原先输入的时间多少天后的日期:"<<endl;
cin>>b;
a= 365-days(date1.year,date1.mouth,date1.day);
if(R(date.year))
a+=1;
if(b<d[date.mouth]-date.day)
date.day=date.day+b;
else
F(a,b);
date2=date;
cout<<"您想知道的日期是:"<<date.year<<"年"<<date.mouth<<"月"<<date.day<<"日"<<endl;
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;
}
bool R(int x)
{
if((x%4==0&&x%100!=0)||(x%400==0))
return 1;
else 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 F(int a,int b)
{
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
{
b=b-d[date.mouth]+date.day;
date.mouth+=1;
}
for(i=date.mouth; b>d[i]; i++)
{
date.mouth++;
b=b-d[i];
}
if(b==0)date.day=1;
date.day=b;
}
总结:,,,,,,,,,,,,,,。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。