杭电1201(18岁生日)
请大家帮我看看,我觉得结果是对的,但它给我wa,是否哪里还有漏洞,若能帮我找出来十分感谢。#include"stdio.h"
int leap(int n) //这是一个判断是否是闰年的函数。
{ int a;
if(n%4==0 && n%100!=0 || n%400==0)
a=1;
else a=0;
return(a);
}
int main()
{ int leap(int n);
int i,j,k,year,day,month;
int b,c,d,n,sum;
scanf("%d",&n);
while(n--)
{
scanf("%d-%d-%d",&year,&month,&day);
sum=0;b=leap(year);d=leap(year+18); //b是判断第一年是否是闰年,d是第18岁是否是闰年。
if(b==1 && month==2 && day==29)
{printf("-1\n");continue;}
for(i=0;i<18;i++) //这里是求总天数。
{
if(leap(year)==1)
sum+=366;
else sum+=365;
year++;
}
if(b==1 && month>2) //这里排除虽然第一年和最后一年虽然是润年,但生日,不符合要求的,减去多余一天。
sum-=1;
if(d==1 && (month<=2 && day<29))
sum-=1;
printf("%d\n",sum);
}
return 0;
}