编辑代码

#include <stdio.h>
int date[3];
int isleap(int year){
    int leap;
    if(year%400 == 0)
        leap = 1;
    else 
        if(year%100 == 0)
            leap = 0;
        else
            if(year%4 == 0)
                leap = 1;
            else
                leap = 0;
    return leap;
}

int daysInMonth(int year,int month){
    int Febdays,days;
    if(isleap(year))
        Febdays = 29;
    else
        Febdays = 28;
    switch(month){
        case 1: days = 31;break;
        case 2: days = Febdays;break;
        case 3: days = 31;break;
        case 4: days = 30;break;
        case 5: days = 31;break;
        case 6: days = 30;break;
        case 7: days = 31;break;
        case 8: days = 31;break;
        case 9: days = 30;break;
        case 10: days = 31;break;
        case 11: days = 30;break;
        case 12: days = 31;break;
        default: days = 30;break;
    }
    return days;
}

int islegal(int date[3]){
    int year,month,day,legal;
    year = date[0];
    month = date[1];
    day = date[2];
    if((month>=1)&&(month<=12)){
        if((day>=1)&&(day<=daysInMonth(year,month)))
            legal = 1;
        else
            legal = 0;
    }
    else
        legal = 0;
    return legal;
}

void dateinput(int date[3]){
    int inputdate[3];
    while(1){
        printf("请输入年份\n");
        scanf("%d",&inputdate[0]);
        printf("请输入月份\n");
        scanf("%d",&inputdate[1]);
        printf("请输入日期\n");
        scanf("%d",&inputdate[2]);
        if(islegal(inputdate)){
            date = inputdate;
            break;
        }
        else
            printf("输入格式有误,请重新输入\n");
    }
}

int main () {
    int i;
    dateinput(date);
    for(i=0;i<3;i++)
        printf("%d",date[i]);
	return 0;
}