#include <cstdio>
#include <windows.h>
#include <iostream>
using namespace std;
void Date(int a,int b, int c,int year,int month, int day)
{
int hour,minute,second;
for(int i=0;;i++)
for(hour=a;hour<=23;hour++)
for(minute=b;minute<=59;minute++)
for(second=c;second<=59;second++)
{
printf("时间:%02d:%02d:%02d\n",hour,minute,second);
Sleep(1000);
system("cls");
if(c=59){c=0;}
if(b=59){b=0;}
if(a=23){a=0;}
if((hour==0&&minute==0)&&second==0)//当时间为“00:00:00”时,日期加1
{
day++;
if(((year%4==0&&year%100!=0)||year%400==0)&&month==2)
if(day==30)//判断闰年2月
{
day=1;month++;
}
else
day=day;
else
if((month==2)&&(day==29))//非闰年2月
{
day=1;month++;
}
}
if((day==31)&&((month==4||month==6)||(month==9||month==11)))//30天的月份
{
day=1;month++;}
if(day>31)
{
day=1;month++;
}
if(month>12)
{
month=1;year++;
}
printf("日期:%02d-%02d-%02d\n",year,month,day);
}
}
void Find_Time_Error(int &x,int &c,int &z)//时间输入排错
{
int k;
do
{
k=0;
if((x>23||x<0)||(c>59||c<0)||(z>59||z<0))
{
cout<<"你的输入有误"<<endl;
k=1;
cout<<"请输入完整的时间(16:08:45)"<<endl;
scanf("%d:%d:%d",&x,&c,&z);
}
else
{
break;
}
}
while(k);
}
void Find_Date_Error(int &year,int &month,int &day)//日期输入排错
{
int i;
do
{
i=0;
if(month>12||day>31)
{
cout<<"你的输入有误"<<endl;
i=1;
cout<<"请输入年.月.日(格式:2008 9 10):"<<endl;
cin>>year>>month>>day;
}
if((!((year%4==0&&year%100!=0)||year%400==0)&&month==2)&&day>28)
{
cout<<year<<"年是平年,2月只有28天"<<endl;
i=1;
cout<<"请输入年.月.日(格式:2008 9 10):"<<endl;
cin>>year>>month>>day;
}
if((month==2&&day==30)||(month==2&&day==31))
{
cout<<"你的输入有误"<<endl;
i=1;
cout<<"请输入年.月.日(格式:2008 9 10):"<<endl;
cin>>year>>month>>day;
}
if(((month==4||month==6)||(month==9||month==11))&&day==31)
{
cout<<month<<"月份是小月,该月只有30天"<<endl;
i=1;
cout<<"请输入年.月.日(格式:2008 9 10):"<<endl;
cin>>year>>month>>day;
}
}
while(i);
}
//主函数
int main()
{
int q,r,t,y,m,d;
system("title 电子日历");
system("color 0b");
cout<<"请输入年.月.日(格式:2008 9 10):"<<endl;
cin>>y>>m>>d;
Find_Date_Error(y,m,d);
cout<<"请输入完整的时间(16:08:45)"<<endl;
scanf("%d:%d:%d",&q,&r,&t);
Find_Time_Error(q,r,t);
Date(q,r,t,y,m,d);
return 0;
}
|