历届试题 日期问题

这是2017年第八届的题目(历届试题 日期问题),我觉得出题不严谨,
4月没有31号,而这道题目的测试数据只是考虑到了闰年和年和月相同的数据。
/*测试数据:02/04/31
输出:
2002-04-31//明显不符合常理,但是代码却ac了
2031-02-04
2031-04-02
Process returned 0 (0x0) execution time : 5.359 s
Press any key to continue.

*/

#include<stdio.h>
#include<iostream>
void shuchu( int , int , int );
int check( int , int , int );
int main( void )
{
    int y , m , d , zf ;
    scanf("%d%c%d%c%d", & y , &zf, & m , &zf,& d);
    shuchu( y , m , d );
    return 0 ;
}
int check( int y, int m, int d)
{
    if( d == 29 && m == 2 )
    {
        if( (y % 4 == 0 && y %100 != 0)||( y %400 == 0 ))
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }

}
void shuchu( int y, int m, int d)
{
    int year , month , day ;
    for( year = 1960 ; year < 2060 ; year ++ )
    {
        for( month = 1 ; month < 13 ; month ++ )
        {
            for( day = 1 ; day < 32 ; day ++ )
            {
                if( year%100 == y && month == m && day == d)
                {
                    if( check( year , month , day))
                    {
                        printf("%d-%02d-%02d
", year , month , day );
                    }
                }
                if( month == y &&  day== m && year%100 == d && y != d )
                {
                     printf("%d-%02d-%02d
", year , month , day );
                }
                if(day == y && month == m && year%100 == d && m != y)
                {
                     printf("%d-%02d-%02d
", year , month , day );
                }
            }
        }
    }
}
不一样的烟火
原文地址:https://www.cnblogs.com/cstdio1/p/10940479.html