这是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 ); } } } } }