From: http://guchonglin-6.blog.163.com/blog/static/5752753120100714324689/
//关键在于,一不要越界,二判断闰年并且二月是29天,之后是if语句嵌套判断
#include<iostream>
using namespace std;
int resetime(int &year,int &month,int &day,int &hour,int &minute,int &second)
{
int dayofmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(year%400==0||year%100!=0&&year%4==0)
{
dayofmonth[1]=29;
}
else dayofmonth[1]=28;
cout<<"二月"<<dayofmonth[1]<<endl;
//唯独秒是0~60,因为不存在进位使之因为60而为0
if(year<0||month<0||month>12||day<1||day>dayofmonth[month- 1]||hour<0||hour>23||minute<0||minute>59||second<0||second>60) return 0;
second+=1;
//判断中需要的是判断年月日是否超出某个范围,而小时,分钟和秒钟则需要则判断是否>=60进位,其实一般都是用=60判断,很少用大于进行判断。即区别在于按整进位还是越界进位。
//如果输入秒是60本身,则输入本身就有问题
if(second>=60)
{
second=0;
minute+=1;
if(minute>=60)
{
minute=0;
hour+=1;
if(hour>=24)
{
hour=0;
day+=1;
if(day>dayofmonth[month-1])
{day=1;
month+=1;
if(month>12)
{month=1;
year+=1;
}
}
}
}
}
cout<<year<<" "<<month<<" "<<day<<" "<<hour<<" "<<minute<<" "<<second<<endl;
return 0;
}
{
int year=2008,month=12,day=31,hour=23,minute=59,second=60;
resetime(year,month,day,hour,minute,second);
system("pause");
return 0;
}