| sdccf 回复于:2002-09-26 13:10:09 |
| 谢谢! |
| geekchi 回复于:2002-09-26 14:28:30 |
| 试了再说。 |
| wkl 回复于:2002-09-26 21:45:17 |
| 正缺,3KS |
| zxyunix 回复于:2002-09-27 11:11:43 |
| /** 看我的 **/ /***********************************************************************/ /*函数名称:IsRunNian */ /*功能介绍:判断是否为润年 */ /*调用格式:int IsRunNian( i_year  /*参数说明:i_year 输入年份(yyyy) */ /*返回说明: 1 -- 是润年 */ /* -1 -- 不是润年 */ /***********************************************************************/ int IsRunNian(int i_year) { if( ((i_year%4==0)&&(i_year%100!=0)) || (i_year%400==0)  return -1; } /***********************************************************************/ /*函数名称:CheckDate */ /*功能介绍:检查输入日期的合法性 */ /*调用格式:int CheckDate(s_date) */ /*参数说明: s_date 输入日期(格式yyyymmdd) */ /*返回说明:0 -- 合法 */ /* 其它 -- 不合法 */ /***********************************************************************/ int CheckDate(s_date) char *s_date; { int i,y,m,d; intmouth_date[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int rc; if(strlen(s_date)< for(i=0;i<8;i++) if ( !isdigit(s_date[i])  i=sscanf(s_date,"%4d%2d%2d", &y, &m, &d); if(i!=3) return -103; if(y<0) return -104; if(m<1||m>12) return -105; rc=IsRunNian(y); if(m==2 && rc==1) { if(d>29 || d<1) return -106; } else if(d>mouth_date[m] || d<1) return -107; return 0; } |
| zxyunix 回复于:2002-09-27 11:19:57 |
| 凌曦你的程序是错的,输20020229的时候看看 |
| 月冷西湖 回复于:2002-09-27 11:21:02 |
| 去试试。 |
| 凌曦 回复于:2002-09-28 12:46:12 |
| 我来试试,呵呵! |
| 凌曦 回复于:2002-09-28 12:52:56 |
| 我知道了,是判断润年的条件用错了,应把 if ((year%4==0 && year%100==0) || (year%400==0)) 改成 if ((year%4==0 && year%100!=0) || (year%400==0)) |