提示用户按照YYYY-DD-MM的格式输入日期,判断用户的输入是否正确,如果有错误尽可能的提示完整

提示用户按照YYYY-DD-MM的格式输入日期,判断用户的输入是否正确,如果有错误尽可能的提示完整的错误信息,用python

#include"stdio.h"
void main()
{
int leap(int y);
int year,month,day;
int sum=0,i,m[12]={31,0,31,30,31,30,31,31,30,31,30,31};
printf("Input a year,month,day:");
scanf ("%d,%d,%d",&year,&month,&day);
if (leap(year))
{m[1]=29;}
else
{m[1]=28;}
for (i=0;i<=(month-2);i++)
{sum+=m[i];}
sum+=day;
printf ("Total=%d\n",sum);
}
int leap(int y)
{
int leapyear=0;
if (y%4!=0)
leapyear=0;
else if (y%100!=0)
leapyear=1;
else if (y%400!=0)
leapyear=0;
else
leapyear=1;
return(leapyear);
}

加个检验函数,防止出现输入的月份大于12月,天数大于当月最大天数的情况(本来以为这个应该很容易实现,可没想到花了我不少时间,不过总算成功了!!)

#include"stdio.h"
void main()
{
int leap(int y);
int test(int day,int leap);
int year,month,day;
int m[12]={31,0,31,30,31,30,31,31,30,31,30,31};
printf("Input a year,all day:");
scanf ("%d,%d",&year,&day);
leap(year);
if (leap)
{m[1]=29;}
else
{m[1]=28;}
if (test(day,leap(year))!=0)
{for (month=1;((month<=12)&&(day>=28));month++)
{day-=m[month-1];}
printf("Year:%d Month:%d Day:%d\n",year,month,day);}
}
int leap(int y)
{
int leapyear=0;
if (y%4!=0)
leapyear=0;
else if (y%100!=0)
leapyear=1;
else if (y%400!=0)
leapyear=0;
else
leapyear=1;
return(leapyear);
}
int test(int sum,int leap)
{
if ((sum>365)&&(leap==0))
{printf("Error Day>365!!!\n");return(0);}
if ((sum>366)&&(leap==1))
{printf("Error Day>366!!!\n");return(0);}
}
}
温馨提示:答案为网友推荐,仅供参考
相似回答