Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:实在是 不容易啊 ~ 终于 AC~In Reply To:实在是 不容易啊 ~ 终于 AC~ Posted by:810974380 at 2009-08-20 16:07:02 > 一直搞错了个问题,用if else 判断平年 闰年 > 由于偷懒 直接把闰年的一段 复制到平年上面, > 有个地方没注意修改,结果出现问题了,我不管是 > 平年还是闰年都减去了闰年月份上面的天数,导致有些天数是 > 0,比如1429输出11月29 而1430输出12月0 我一直发现不了错误~~~ > > 总算改过来了~ > > 希望大家不要和我一样偷懒,代码还是要一个一个打,复制粘贴 > 时有些细节会漏掉的~ > > 切记切记!~~~ > > > > > 附上代码,以供参考~ > > #include<stdio.h> > #include<stdlib.h> > char *str[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; > int a[12]={31,59,90,120,151,181,212,243,273,304,334,365}; > int b[12]={31,60,91,121,152,182,213,244,274,305,335,366}; > int search1(int n) //查找平年的月份 > {int i=0; > while(1) > { if(n<=a[i]) break; > i++; > } > return i; > } > int search2(int n) //查找闰年的月份 > {int j=0; > while(1) > { if(n<=b[j]) break; > j++; > } > return j; > } > int main() > { > int n,w,x,y,t,day,month; > while(scanf("%d",&n)){ > if(n==-1) break; > w=n; > n++; > x=2000; > > while(n>366) > {if((x%4==0&&x%100!=0)||x%400==0) > n-=366; > else n-=365; > x++; > } > > if(n==366&&!((x%4==0&&x%100!=0)||x%400==0)) > {n-=365;x++;} > > if((x%4==0&&x%100!=0)||x%400==0) > y=1; > else y=0; > > switch((y==1)?(1):(0)) > { > case 1: > {t=search2(n); > if(t==0)day=n; > else day=n-b[t-1]; > month=t+1; > > printf("%d-%02d-%02d %s\n",x,month,day,str[(w+6)%7]); > break;} > > case 0: > { t=search1(n); > if(t==0) day=n; > else day=n-a[t-1]; > month=t+1; > > printf("%d-%02d-%02d %s\n",x,month,day,str[(w+6)%7]); > break;} > } > } > > system("pause"); > return 0; > } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator