C语言中,如何验证输入日期的正确性!~

用TC!~~~~
如何验证输入日期的正确性!~
如:1984-56-02 报错
1984-04-31 报错
1984-05-31 对
请给答案的大大给出源程序!~~~~~~~
要源程序哦!~~~~~
我也知道定范围!~~~~~~
可是怎么定呀!~~~~~~~~~

第1个回答  2019-04-24
就这么写的,没调试,你自己调一下
#include
void
main()
{
int
year,month,date;
scanf("%d-%d-%d",&year,&month,&date);
printf("%d-%d-%d",year,month,date);
if(year<0||year>3000)
printf("Error!");
if(month>12||month<1)
printf("Error!");
switch(month)
{
case
1:
if(date>31||date<1)
printf("Error!");break;
case
2:
if((year%4==0)&&(year%100!=0)||(year%400==0))
{
if(date>29||date<1)
printf("Error!");
}
else
if(date>28||date<1)
printf("Error!");
break;
case
3:
if(date>31||date<1)
printf("Error!");break;
case
4:
if(date>30||date<1)
printf("Error!");break;
case
5:
if(date>31||date<1)
printf("Error!");break;
case
6:
if(date>30||date<1)
printf("Error!");break;
case
7:
if(date>31||date<1)
printf("Error!");break;
case
8:
if(date>31||date<1)
printf("Error!");break;
case
9:
if(date>30||date<1)
printf("Error!");break;
case
10:
if(date>31||date<1)
printf("Error!");break;
case
11:
if(date>30||date<1)
printf("Error!");break;
case
12:
if(date>31||date<1)
printf("Error!");break;
}
}
第2个回答  2020-01-29
#include
#include
#include
int
main()
{
int
iy,im,id;
int
flag=0;
char
sy[5];
char
sm[3];
char
sd[3];
char
s[9];
int
a[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,
31,29,31,30,31,30,31,31,30,31,30,31};
memset(sy,0,5);
memset(sm,0,3);
memset(sd,0,3);
memset(s,0,9);
clrscr();
scanf("%s",s);
strncpy(sy,s,4);
iy=atoi(sy);
strncpy(sm,&s[4],2);
im=atoi(sm);
strncpy(sd,&s[6],2);
id=atoi(sd);
if(iy<0||iy>9999)
{
printf("wrong
date
!\n");
return
1;
}
if((iy%4==0&&iy%100!=0)||(iy%100==0&&iy%400==0))
flag=1;
if(im<0||im>12||id>a[flag][im-1]||id<0)
{
printf("wrong
date
!\n");
return
1;
}
else
printf("right
date!\n");
return
0;
}
相似回答