user-0 提问: 日历程序求大神修改

回复:
user: user-1
content: 可以啊想什么就做才能精益求精

user: user-2
content: 当然可以，LZ慢慢来。

user: user-3
content: 仅供参考，尽管是java script：  1900-2050年超酷百年日历。 来自网络，经本人整理优化。 http://download.csdn.net/detail/zhao4zhong1/1211949

user: user-4
content: 当然可以的阿！ 也就是每次显示的加一个额外的判断呗！ 一步一步的向后完善吧！

user: user-0
content: /*返回农历信息*/ int get_lunar_info(int solar_year, int solar_month, Lunar_info *l_info,Chinese_era *china_era) {  	int i; 	int total; 	int temp_num; 	/*阳历1900年01月31日为农历1900年01月01日*/ 	total=get_solar_total(solar_year,solar_month)-30; 	china_era->era_day=total+40; 	/*将13和14月作为下一年的1月和2月,便于确定Y年M月D日是星期几 	蔡勒公式求星期几:W=[C/4]-2C+y+[y/4]+[13×(M+1)/5]+d-1*/ 	china_era->era_month=14; 	for(i=1900;i<2051&&total>=0;i++) 	{ 	  /*temp_num记录从1900到2050年闰年和平年的天数*/ 	  temp_num=get_lunar_year_total(i); 	  total-=temp_num; 	  /*累计月*/ 	  china_era->era_month+=12; 	} 	l_info->lunar_year=i; 	if(total<0) 	{ 	  total+=temp_num; 	  /*减年*/ 	  l_info->lunar_year--; 	  china_era->era_month-=12; 	} 	/*1864年为农历甲子年*/ 	china_era->era_year=l_info->lunar_year-1864; 	/*返回是否存在闰月*/ 	l_info->leap_month=get_leap_month(l_info->lunar_year); 	l_info->leap_flag=0; 	for(i=1;i<13 &&total>0;i++) 	{ 		if (l_info->leap_month>0&&i==(l_info->leap_month+1)&&l_info->leap_flag==0) 		{ 			--i; 			temp_num=get_leap_month_day(l_info->lunar_year); 			/*存在闰月*/ 			l_info->leap_flag=1; 		} 		else 			temp_num=get_lunar_month_total(l_info->lunar_year, i); 		if (l_info->leap_flag==1&&i==(l_info->leap_month+1)) 			l_info->leap_flag=0; 		total-=temp_num; 		if (l_info->leap_flag==0) 			china_era->era_month++; 	} 	if(total==0&&l_info->leap_month>0&&i==l_info->leap_month+1) 		if(l_info->leap_flag==1) 			l_info->leap_flag=0; 		else 		{ 		   l_info->leap_flag=1; 		   --i; 		   --china_era->era_month; 		} 		if(total<0) 		{ 		  total+=temp_num; 		  --i; 		  --china_era->era_month; 		} 		l_info->lunar_month=i; 		l_info->lunar_day=total+1; 		if (l_info->leap_flag==0) 			l_info->current_mday=get_lunar_month_total(l_info->lunar_year,l_info->lunar_month); 		else 			l_info->current_mday=get_leap_month_day(l_info->lunar_year); 		return 0; } /*输出农历日期信息*/ int out_chinese(Lunar_info *l_info,char *chinese_str) {  	/*初一不打印*/ 	if (l_info->lunar_day!=1) 	{ 		strcpy(chinese_str, chinese_day[l_info->lunar_day-1]); 		if (l_info->lunar_day==15&&l_info->lunar_month==1) 				strcpy(chinese_str, "元宵节"); 		if(l_info->lunar_day==22&&l_info->lunar_month==2&&l_info->lunar_year>1986) 			strcpy(chinese_str, "凤诞辰"); 		if(l_info->lunar_day==5&&l_info->lunar_month==5) 			strcpy(chinese_str, "端午节"); 		if(l_info->lunar_day==7&&l_info->lunar_month==7) 			strcpy(chinese_str, "情人节"); 		if(l_info->lunar_day==15&&l_info->lunar_month==7) 			strcpy(chinese_str, "中元节"); 		if (l_info->lunar_day==15&&l_info->lunar_month==8) 				strcpy(chinese_str, "中秋节"); 		if (l_info->lunar_day==9&&l_info->lunar_month==9) 				strcpy(chinese_str, "重阳节"); 		if(l_info->lunar_day==5&&l_info->lunar_month==10&&l_info->lunar_year>1985) 			strcpy(chinese_str, "龙诞辰"); 		if(l_info->lunar_month==12) 		{ 			if(l_info->lunar_day==30) 				strcpy(chinese_str, "除夕"); 			if(l_info->current_mday<30&&l_info->lunar_day==29) 				strcpy(chinese_str, "除夕"); 			if (l_info->lunar_day==8) 				strcpy(chinese_str, "腊八节"); 			if (l_info->lunar_day==23) 				strcpy(chinese_str, "小年"); 		}  	} 	else 	{ 		if (l_info->leap_flag==1) 		{ 			//如果存在闰月就将汉字闰复制到数组里，再连接农历月份 			strcpy(chinese_str, "闰"); 			strcat(chinese_str,chinese_month[l_info->lunar_month-1]); 			strcat(chinese_str, "月"); 		} 		else 		{ 			if (l_info->lunar_month==1) 				strcpy(chinese_str, "春节"); 			else 			{ 				strcpy(chinese_str,chinese_month[l_info->lunar_month-1]); 				strcat(chinese_str, "月"); 				if(get_lunar_month_total(l_info->lunar_year,l_info->lunar_month)==30) 					strcat(chinese_str,"大"); 				else 					strcat(chinese_str,"小"); 			} 		} 	} 	return 0; } /*界面输出*/ void sub_menue() { 	  int week,s_month_total,space_num,c_num;    	  int i,j; 	  char tmp_str[9]; 	  Chinese_era c_ear; 	  Lunar_info l_info; 	  /*每个月一号为星期几*/ 	  week=get_week(s_year,s_month); 	  /*返回当月的天数*/ 	  s_month_total=day(s_month); 	  //将已开辟内存空间tmp_str的首sizeof(tmp_str)个字节的值设为值0,作用在于可以方便的清空结构类型的数组或变量。 	  memset(&c_ear,0,sizeof(c_ear)); 	  memset(&l_info,0,sizeof(l_info)); 	  /*返回农历信息*/ 	  get_lunar_info(s_year,s_month,&l_info,&c_ear); 	  memset(tmp_str,0,sizeof(tmp_str)); 	  /*确定干支*/ 	  get_chinese_era(s_year-1864,tmp_str); 	  system("cls"); 	  printf("\t　     ╭───────────────────────────╮\n");    	  printf("\t       ｜                   欢迎使用万年历系统                 ｜\n"); 	  printf("\t       ｜───────────────────────────｜\n"); 	  printf("\t       ｜          阳历:%d年%02d月  农历:%s年 【%s】         ｜\n", 	  s_year,s_month, tmp_str, Animals[(s_year-1864)%12]); 	  printf("\t       ｜───────────────────────────｜\n"); 	  printf("\t       ｜        今天是:"); 	  TIME(); 	  printf("｜\n"); 	  printf("\t       ｜───────────────────────────｜\n"); 	  printf("\t       ｜星期日  星期一  星期二  星期三  星期四  星期五  星期六｜\n"); 	  printf("\t       ｜───────────────────────────｜\n"); 	  printf("\t       ｜  ");  	  space_num=week; 	  for (i=1; i<space_num;i++) 	  { 		  printf("        "); 	  } 	  c_num=0; 	  for (i=1; i<=s_month_total;i++) 	  { 		   s_day=i; 		   printf("%02d",s_day);  		   week+=1; 		   if((week>7)||(i==s_month_total)) 		   { 			   week=1; 		       printf("\n               ｜"); 				if (i<7) 				{ 					for (j=1;j<space_num;j++) 					{ 						printf("        "); 					} 					week=space_num; 				} 				else 					week=1; 				while(1) 				{ 					week+=1; 					memset(tmp_str,0,sizeof(tmp_str)); 					out_chinese(&l_info,tmp_str); 					printf("% 6s", tmp_str); 					if (l_info.lunar_day<l_info.current_mday) 						l_info.lunar_day=l_info.lunar_day+1; 					else 					{ 						if ((l_info.lunar_month==l_info.leap_month)&&l_info.leap_flag==0) 						{ 							/*存在闰月,返回天数*/ 							l_info.current_mday=get_leap_month_day(l_info.lunar_year); 							l_info.leap_flag=1; 						} 						else 						{ 							l_info.lunar_month=l_info.lunar_month+1; 							if (l_info.lunar_month>12) 							{ 								l_info.lunar_month=1; 								/*月数大于12进年*/ 								l_info.lunar_year=l_info.lunar_year+1; 							} 							/*返回闰月的天数*/ 							l_info.current_mday=get_lunar_month_total(l_info.lunar_year, l_info.lunar_month); 							l_info.leap_flag=0; 						} 						l_info.lunar_day=1; 					} 					c_num++; 					if ((week>7)||(c_num==s_month_total)) 					{ 						week=1; 						printf("\n               ｜  "); 						break; 					} 					else 						printf("  "); 				} 		   } 		   else 			   printf("      "); 	  } 	  printf("\n"); 	  printf("\t       ╰───────────────────────────╯\n"); 	  	 printf("\t　　************************************************************************\n");          printf("\t  　*                                                                      *\n"); 		 printf("\t  　*   崇                  万年历            查询系统                自   *\n"); 		 printf("\t    *                                                                      *\n"); 		 printf("\t　　* 　德   1    查询上一年                2    查询下一年           强   *\n"); 		 printf("\t　　*     　                                                               *\n"); 		 printf("\t　　* 　尚   3    查询上一月                4    查询下一月           力   *\n"); 		 printf("\t　　*                                                                      *\n"); 		 printf("\t　　* 　学   5    退出系统                  6    关于作者             行    *\n"); 		 printf("\t　　*     　                                                               *\n"); 		 printf("\t　　************************************************************************\n"); } main() {  	system("mode con:cols=100 lines=50"); 	system("color 04"); 	char tmp_str[9]; 	int curr_year,curr_month; 	time_t t; 	struct tm *tp; 	t=time(NULL); 	tp=localtime(&t); lable:; 	s_year=tp->tm_year+1900; 	s_month=tp->tm_mon+1; 	sub_menue(); 	while (1) 	{ 	  printf("\t\t       你可以输入年份(1900-2050),也可以输入(1-5)!\n请输入:"); 	  /*将已开辟内存空间tmp_str的首sizeof(tmp_str)个字节的值设为值0,作用在于可以方便的清空结构类型的数组或变量。*/ 	  memset(tmp_str,0,sizeof(tmp_str)); 	  gets(tmp_str); 	  /*atoi将字符串转换成整型数,用curr_month，curr_year接收输入的值*/ 	  curr_month=curr_year=atoi(tmp_str); 	  /*上一年*/ 	  if(curr_year==1&&strlen(tmp_str)==1) 	  { 		  s_year--; 		  if(s_year<1900) 			  s_year=2050; 	  } 	  /*下一年*/ 	  else if(curr_year==2&&strlen(tmp_str)==1) 	  { 		  s_year++; 		  if(s_year>2050) 			  s_year=1900; 	  } 	  /*上一月*/ 	  else if(curr_month==3&&strlen(tmp_str)==1) 	  { 		  s_month--; 		  if (s_month<1) 		  { 			  s_year-=1; 			  s_month=12; 			  if(s_year<1900) 				  s_year=2050; 		  } 	  } 	  /*下一月*/ 	  else if(curr_month==4&&strlen(tmp_str)==1) 	  { 		  s_month++; 		  if (s_month>12) 		  { 			  s_year+=1; 			  s_month=1; 			  if(s_year>2050) 				  s_year=1900; 		  } 	  } 	  /*退出*/ 	  else if(curr_year==5&&strlen(tmp_str)==1) 		  { 			  system("cls"); 			  printf("\n\n\n\n\n\n\n\n\t\t\t    谢 谢 使 用, 再 见 !!!\n\t\t\t "); 			  buffer(1); 			  exit(0); 		  } 	  /*关于作者*/ 	   else if(curr_year==6&&strlen(tmp_str)==1) 		  { 			  system("cls"); 		     printf("\t**********************************************************\n\n"); 			 printf("\t^^^^^^^^^^     大学计算机科学技术学院    ^^^^^^^^^^\n\n"); 			 printf("\t^^^^^^^^^           网络工程13-1班            ^^^^^^^^^\n\n"); 			 printf("\t^^^^^^^^          *   *    *                    ^^^^^^^^\n\n"); 			 printf("\t^^^^^^^^^          禁止CTRL+C    谢谢合作      ^^^^^^^^^\n\n"); 			 printf("\t^^^^^^^^^^   如有系统故障，请联系             QQ:188075810\n\n");         			 printf("\t**********************************************************\n\n"); 			  buffer(1); 			  exit(0); 		  } 	  else 	  { 		  s_year=atoi(tmp_str); 		  if (strlen(tmp_str)>4||(s_year<1900)||(s_year>2050)) 		  { 		   printf("\t\t\t  Error:年份输入错误,重新输入!!!\n"); 		   buffer(1); 		   goto lable; 		  } 		  printf("请输入月份(1-12):"); 		  memset(tmp_str,0,sizeof(tmp_str)); 		  gets(tmp_str); 		  s_month=atoi(tmp_str); 		  if (strlen(tmp_str)>2||(s_month<1)||(s_month>12)) 		  { 		   printf("\t\t\t  Error:月份输入错误,重新输入!!!\n"); 		   buffer(1); 		   goto lable; 		  } 	  } 	  sub_menue(); 	} }可以将节日，节气插到日历里吗？顺便添加一些小功能吗？