user-0 提问: c 考虑每个月实际天数及闰年

回复:
user: user-1
content: 不同情况不同判断，把28天（29天）、30天、31天的月分别运行不同分支

user: user-1
content: 帮你改成如下，测试了几个没问题，但可能有些情况我没考虑到，楼主可以再在上面进行改进   #include <stdio.h> struct date_rec { 	int day ; 	int month ; 	int year ; } ;  struct date_rec current_date ;  int main() { 	int flag = 1 ; //闰年为1 平年为0 	printf("输入日期: "); 	scanf("%d",¤t_date.day); 	printf("输入月份: "); 	scanf("%d",¤t_date.month); 	printf("输入年份: "); 	scanf("%d",¤t_date.year);  	current_date.day += 1 ;  	//判断闰年 	if( ( current_date.year % 4 == 0 && ( current_date.year % 100 ) != 0 ) || current_date.year % 400 == 0 ) 		flag = 1; 	else 		flag = 0;  start: 	if( current_date.month == 2  ) 	{ 		if( current_date.day > (flag == 1 ? 29 : 28) ) 		{ 			current_date.day -= (flag == 1 ? 29 : 28); 			current_date.month++ ; 			goto start; 		} 	} 	else if( (current_date.month == 1 || current_date.month == 3 || current_date.month == 5 || current_date.month == 7 || current_date.month == 8 || current_date.month == 10 || current_date.month == 12) && current_date.day > 31) 	{ 		if( current_date.day > 31 ) 		{ 			current_date.day -= 31 ; 			current_date.month++ ; 			goto start; 		} 	} 	else if ( current_date.month == 4 || current_date.month == 6 || current_date.month == 9 || current_date.month == 11) 	{ 		if( current_date.day > 30 ) 		{ 			current_date.day -= 30 ; 			current_date.month++ ; 			goto start; 		} 	} 	while( current_date.month > 12 ) 	{ 		current_date.month -= 12 ; 		current_date.year++ ; 	}   	if( flag == 1 ) 	{ 		printf("%d 年%d 月 %d 号(闰年)\n",current_date.year,current_date.month,current_date.day); 	} 	else 	{ 		printf("%d 年%d 月 %d 号(平年)\n",current_date.year,current_date.month,current_date.day); 	} }

user: user-0

user: user-0
content: 引用 3 楼 user-1 的回复:[quote=引用 2 楼 qq_33341459 的回复:] 这年月日 是要自己输入进去的，加一天再将结果输出。   比如输入2008年2月29号，加一天输出应该是2008年3月1号  你就分几种请问讨论不就行了，按月有几天来分，其中二月这种情况又继续分为是否是闰年[/quote] #include <stdio.h> struct date_rec { 	int day ; 	int month ; 	int year ; } ;  struct date_rec current_date ;  int main() { 	int flag = 1 ; //闰年为1 平年为0 	printf("输入日期: "); 	scanf("%d",¤t_date.day); 	printf("输入月份: "); 	scanf("%d",¤t_date.month); 	printf("输入年份: "); 	scanf("%d",¤t_date.year);  	current_date.day += 1 ;  	//判断闰年 	if( ( current_date.year % 4 == 0 && ( current_date.year % 100 ) != 0 ) || current_date.year % 400 == 0 ) 	{ 		if( current_date.month == 2 && current_date.day > 29 ) 		{ 			current_date.day -= 29 ; 			current_date.month++ ; 		} 		if( current_date.month == 1 || current_date.month == 3 || current_date.month == 5 || current_date.month == 7 || current_date.month == 8 || current_date.month == 10 || current_date.month == 12) 		{ 			while( current_date.day > 31 ) 			{ 				current_date.day -= 31 ; 				current_date.month++ ; 			} 		} 		else if ( current_date.month == 4 || current_date.month == 6 || current_date.month == 9 || current_date.month == 11) 		{ 			while( current_date.day > 30 ) 			{ 				current_date.day -= 30 ; 				current_date.month++ ; 			} 		} 		while( current_date.month > 12 ) 		{ 			current_date.month -= 12 ; 			current_date.year++ ; 		} 	}  	else 	{ 		if( current_date.month == 2 && current_date.day > 28 ) 		{ 			current_date.day -= 28 ; 			current_date.month++ ;  		} 		if( current_date.month == 1 || current_date.month == 3 || current_date.month == 5 || current_date.month == 7 || current_date.month == 8 || current_date.month == 10 || current_date.month == 12) 		{ 			while( current_date.day > 31 ) 			{ 				current_date.day -= 31 ; 				current_date.month++ ; 			} 		} 		else if ( current_date.month == 4 || current_date.month == 6 || current_date.month == 9 || current_date.month == 11) 		{ 			while( current_date.day > 30 ) 			{ 				current_date.day -= 30 ; 				current_date.month++ ; 			} 		} 		while( current_date.month > 12 ) 		{ 			current_date.month -= 12 ; 			current_date.year++ ; 		} 		flag = 0 ; 	} 	 	if( flag == 1 ) 	{ 		printf("%d 年%d 月 %d 号(闰年)\n",current_date.year,current_date.month,current_date.day); 	} 	else 	{ 		printf("%d 年%d 月 %d 号(平年)\n",current_date.year,current_date.month,current_date.day); 	} } 请问哪里出问题了

user: user-0
content: #include <stdio.h> struct date_rec { 	int day ; 	int month ; 	int year ; } ;  struct date_rec current_date ;  int main() { 	int flag = 1 ; //闰年为1 平年为0 	printf("输入日期: "); 	scanf("%d",¤t_date.day); 	printf("输入月份: "); 	scanf("%d",¤t_date.month); 	printf("输入年份: "); 	scanf("%d",¤t_date.year);  	current_date.day += 1 ;  	//判断闰年 	if( ( current_date.year % 4 == 0 && ( current_date.year % 100 ) != 0 ) || current_date.year % 400 == 0 ) 	{ 		if( current_date.month == 2 && current_date.day > 29 ) 		{ 			current_date.day -= 29 ; 			current_date.month++ ; 		} 		if( current_date.month == 1 || current_date.month == 3 || current_date.month == 5 || current_date.month == 7 || current_date.month == 8 || current_date.month == 10 || current_date.month == 12 && current_date.day > 31 ) 		{ 			current_date.day -= 31 ; 			current_date.month++ ; 		} 		else if ( current_date.month == 4 || current_date.month == 6 || current_date.month == 9 || current_date.month == 11 && current_date.day > 30 ) 		{ 			current_date.day -= 30 ; 			current_date.month++ ; 		} 		while( current_date.month > 12 ) 		{ 			current_date.month -= 12 ; 			current_date.year++ ; 		} 	}  	else 	{ 		if( current_date.month == 2 && current_date.day > 28 ) 		{ 			current_date.day -= 28 ; 			current_date.month++ ;  		} 		if( current_date.month == 1 || current_date.month == 3 || current_date.month == 5 || current_date.month == 7 || current_date.month == 8 || current_date.month == 10 || current_date.month == 12 && current_date.day > 31 ) 		{ 			current_date.day -= 31 ; 			current_date.month++ ; 		} 		else if ( current_date.month == 4 || current_date.month == 6 || current_date.month == 9 || current_date.month == 11 && current_date.day > 30 ) 		{ 			current_date.day -= 30 ; 			current_date.month++ ; 		} 		while( current_date.month > 12 ) 		{ 			current_date.month -= 12 ; 			current_date.year++ ; 		} 		flag = 0 ; 	} 	 	if( flag == 1 ) 	{ 		printf("%d 年%d 月 %d 号(闰年)\n",current_date.year,current_date.month,current_date.day); 	} 	else 	{ 		printf("%d 年%d 月 %d 号(平年)\n",current_date.year,current_date.month,current_date.day); 	} }

user: user-1
content: 引用 2 楼 qq_33341459 的回复:这年月日 是要自己输入进去的，加一天再将结果输出。   比如输入2008年2月29号，加一天输出应该是2008年3月1号  你就分几种请问讨论不就行了，按月有几天来分，其中二月这种情况又继续分为是否是闰年

user: user-0
content: 这年月日 是要自己输入进去的，加一天再将结果输出。   比如输入2008年2月29号，加一天输出应该是2008年3月1号