| ||||||||||
| 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 | |||||||||
实在是 不容易啊 ~ 终于 AC~一直搞错了个问题,用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