杭电1201,我用别的方法错了,但是,我想不通为什么是错的,求牛人帮我解惑……
#include <stdio.h>int isleap(int years){//判断是否为闰年
if(years % 400 == 0 || (years % 4 ==0 && years % 100 != 0))
return 1;
else
return 0;
}
int main(){
int sum;
int year, month, day, k, s, e;
int num,i;//T
scanf("%d",&num);
for(i=0;i<num;i++){
scanf("%d-%d-%d",&year, &month, &day);
s=isleap(year); e=isleap(year+18); sum = 365*18+4;//每个平年出生的人活到18岁所经过的天数,由于不管何年出生到18岁都至少经过4个闰年故加4
if(s ==1 && month==2 && day==29)
{
printf("-1\n");
continue;
}
if(s == 1 || year % 2 == 0) sum+=1;//若是出生为闰年或者偶数的平年,则它的18岁中将有5个闰年
//这一步为什么出错啊,在另一种借鉴的方法里把这个替换掉就可以了,但是这一句错在哪里
if(s==1 && month>2) sum-=1;
if(e==1 && month>2) sum+=1;
printf("%d\n",sum);
}
return 0;
}