输入一个时间,某年某月某日,输出下一天
主要就是边界控制,不使用愚蠢写法,无技术含量,仅仅逻辑性考验
注释完善,自行理解
执行环境:Ubuntu18.04 CLion/GCC
WIndows环境也无需修改
Code:
#include < stdio. h>
#include < stdlib. h>
int main ( void ) {
int monArray[ 13 ] = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 } ;
printf ( "输入年月日[Format:xx年xx月xx日]:\n" ) ;
char * time = malloc ( 64 ) ;
scanf ( "%s" , time) ;
int year, mon, day;
sscanf ( time, "%d年%d月%d日" , & year, & mon, & day) ;
if ( ( year % 4 == 0 && year % 100 != 0 ) || ( year % 400 == 0 ) )
monArray[ 2 ] ++ ;
if ( ( mon <= 12 && mon >= 1 ) && ( day <= monArray[ mon] ) ) {
if ( day == monArray[ mon] ) {
if ( mon == 12 ) {
day = 1 ;
mon = 1 ;
year++ ;
}
else {
day = 1 ;
mon++ ;
}
}
else {
day++ ;
}
}
else {
printf ( "Data Error\n" ) ;
return EXIT_FAILURE;
}
printf ( "Next Day is:%d年%d月%d日\n" , year, mon, day) ;
return EXIT_SUCCESS;
}