日期函数 判断一个日期是否合理

来源:互联网 发布:网络大学本科 编辑:程序博客网 时间:2024/05/16 07:42
#include<stdio.h>#include <stdlib.h>#include <time.h>int help( int i){ printf("输入日期不合法!\n");}int date_s(int *n,int *y,int *r){  int date[]={31,28,31,30,31,30,31,31,30,31,30,31};   short deMax[]={1,3,5,7,8,10,12};   if(*y>12||*r>31||*n<1949&&*n!=0||(*y!=2&&(*y&&*r>date[*y-1])))   {help(5);   return 0;   }   if(*y==2)   if((*n&&(*n%100?*n%4:1)&&*n%400&&*r>28)||*r>29)    {help(5);     return 0;       }            if(!*y)        { if(*r==31)   *y=*(rand()%7+deMax);   if(*r==30)      *y=(rand()%11+3)%12;    if(*r==29&&*n)       { if(*n%100?*n%4:1&&*n%400)             *y=(rand()%11+3)%12;              else                *y=rand()%12+1;                   } else if(*r<30)          *y=rand()%12+1;  }   if(!*r&&*y==2&&!(*n%100?*n%4:1&&*n%400))    *r=rand()%29+1;    else if(!*r)    *r=rand()%date[*y-1]+1;if(!*n)    {if(*r==29&&*y==2) *n=4*rand()%13+1968;  else                 *n=rand()%49+1968;       }            }int main(){srand(time(NULL));
          int n,y,r;scanf("%d%d%d",&n,&y,&r);date_s(&n,&y,&r);printf("%04d-%02d-%02d\n",n,y,r);return 0;} 

原创粉丝点击