日期函数 判断一个日期是否合理
来源:互联网 发布:网络大学本科 编辑:程序博客网 时间: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;}