/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 作 者:王颖
* 完成日期:2014 年 3 月 7 日
* 版 本 号:v1.0
* 输入描述: 无
* 问题描述:玩日期/处理该日在本年中是第几天/处理是该天的第几秒
* /处理是该年的第几秒/求输入D天后是哪年哪月哪日/求输入时间s秒后是何时何日
* 程序输出:略
* 问题分析:略
* 算法设计:略
*/
#include <iostream>
using namespace std;
int sort1(int ,int ,int );//处理该日在本年中是第几天
void sort2(int ,int ,int ,long );//处理是该天的第几秒
void sort3(int ,int ,int,int,int,long);//处理是该年的第几秒
void sort4(int ,int ,int ,int );//求输入D天后是哪年哪月哪日
void sort5(int ,int ,int,int,int,long);//求输入时间s秒后是何时何日
struct Date
{
int year;
int month;
int day;
int hour;
int minite;
long second;
};
int main()
{
Date date;
int days1,t1=0;
cout << "请输入年、月、日、时、分、秒:" << endl;
cin>>date.year>>date.month>>date.day>>date.hour>>date.minite>>date.second;
t1=sort1(date.year,date.month,date.day);
cout<<"该日在"<<date.year<<"中是第"<<t1<<"天。"<<endl;
sort2(date.day,date.hour,date.minite,date.second);
sort3(date.year,date.month,date.day,date.hour,date.minite,date.second);
cout<<"请输入你想知道的几天后是哪年的哪月哪天:"<<endl;
cin>>days1;
sort4(date.year,date.month,date.day,days1);
sort5(date.year,date.month,date.day,date.hour,date.minite,date.second);
cout<<endl;
return 0;
}
//处理该日在本年中是第几天
int sort1(int year,int month,int day)
{
int i,t=0;
for(i=0; i<month; i++)
{
if((i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12))
{
t+=31;
}
else if(i==2)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
t+=29;
}
else
{
t+=28;
}
}
else
{
t+=30;
}
}
t+=day;
return t;
}
//处理是该天的第几秒
void sort2(int day,int hour,int minite,long second)
{
int i,j,sum=0;
for(i=0; i<hour; i++)
{
sum+=60*60;
}
for(j=0; j<minite; j++)
{
sum+=60;
}
sum+=second;
cout<<"是这一天的"<<sum<<"秒."<<endl;
}
//处理是该年的第几秒
void sort3(int year,int month,int day,int hour,int minite,long second)
{
int sum2=0,s1=0;
s1=sort1(year, month, day);
int i,j,k;
for(i=0; i<s1; i++)
{
sum2+=24*60*60;
}
for(j=0; j<hour; j++)
{
sum2+=60*60;
}
for(k=0; k<month; k++)
{
sum2+=60;
}
sum2+=second;
cout<<"是这一年的"<<sum2<<"秒."<<endl;
}
//求输入D天后是哪年哪月哪日
void sort4(int year,int month,int day,int days)
{
int s2=0,m1=0,su=0;
int i,j;
su=days;
s2=sort1(year, month, day);
days+=s2;
for(i=0; days>=365 ; i++)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
days-=366;
year+=1;
}
else
{
days-=365;
year+=1;
}
}
for(j=0; days>=28; j++)
{
if((j==1)||(j==3)||(j==5)||(j==7)||(j==8)||(j==10)||(j==12))
{
days-=31;
}
else if(j==2)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
days-=29;
}
else
{
days-=28;
}
}
else
{
days-=30;
}
m1+=1;
}
cout<<su<<"天后是"<<year<<"年"<<month<<"月"<<days<<"日"<<endl;
}
//求输入时间s秒后是何时何日
void sort5(int year,int month,int day,int hour,int minite,long second)
{
int seconds,s3=0,hours=0,minites=0,m1=0,d1=0;
int i,j,k,l,f,n;
cout<<"请输入你想知道的几秒后是哪天的何时:"<<endl;
cin>>seconds;
s3=seconds;
seconds=seconds+second+minite*60+hour*60*60+day*24*60*60;
for(n=0;n<month;n++)
{
if((n==1)||(n==3)||(n==5)||(n==7)||(n==8)||(n==10)||(n==12))
{
seconds+=31*24*60*60;
}
else if(n==2)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
seconds+=29*24*60*60;
}
else
{
seconds+=28*24*60*60;
}
}
else
{
seconds+=30*24*60*60;
}
}
for(i=0;seconds>=24*60*60;i++)
{
seconds-=24*60*60;
d1+=1;
}
for(j=0;seconds>=60*60;j++)
{
seconds-=60*60;
hours+=1;
}
for(k=0;seconds>=60;k++)
{
seconds-=60;
minites+=1;
}
for(l=0; d1>=365 ; l++)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
d1-=366;
year+=1;
}
else
{
d1-=365;
year+=1;
}
}
for(f=0; d1>=28; f++)
{
if((f==1)||(f==3)||(f==5)||(f==7)||(f==8)||(f==10)||(f==12))
{
d1-=31;
}
else if(f==2)
{
if(((year%4==0)&&(year%100!=0))||(year%400==0))
{
d1-=29;
}
else
{
d1-=28;
}
}
else
{
d1-=30;
}
m1+=1;
}
cout<<s3<<"秒后是"<<year<<"年的"<<m1<<"月"<<d1<<"日"<<hours<<"时"<<minites<<"分"<<seconds<<"秒"<<endl;
}
心得体会:慢慢做