您的位置:首页 > 其它

18岁生日(闰年判断+水)

2016-07-23 15:23 369 查看
Description

当你还是18岁的时候,那个曾经一起追过的女孩刚好也是18岁,而且她的生日就要到了,你突然想到一个问题,是不是每个人到18岁生日所经过的天数都是一样的呢?我们来算一下吧

Input

首先输入一个整数n,表示有n组数据,格式是YYYY-MM-DD。

Output

对于每组数据输出一行,每行一个数,表示从出生到18岁生日所经过的天数。如果没有18岁生日,就输出-1。

Sample Input

2

1992-2-1

1988-3-5

Sample Output

6575

6574

题解:1、要求里的没有18岁生日仅仅指于闰年的2月29日出生,不代表还没有到18岁就是没有生日。

2、计算18年有多少天,无非就是判断这18年里有几个闰年,出生那年过的天数加上18岁那年过的天数可以凑齐为一年。

3、判断生日在2月28之前还是之后,如果在之后就判断出生那年的下一年开始,往后18年里几个闰年,之前就判断从出生那年开始,往后18年里有几个闰年。

代码(C)

#include<stdio.h>
int main()
{
int n,d,y,m,sum;
scanf("%d",&n);
for(int j=1;j<=n;j++)
{
sum=0;
scanf("%d-%d-%d",&y,&m,&d);
if(m==1)//分月份判断生日在2月28之前还是之后
{
for(int i=y;i<y+18;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
sum=sum+366;
}
else  sum=sum+365;
}
}
else if(m>2)
{
for(int i=y+1;i<=y+18;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
sum=sum+366;
}
else  sum=sum+365;
}
}
else if(m==2)
{
if(d==29)  sum=-1;
else
{
for(int i=y;i<y+18;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
sum=sum+366;
}
else  sum=sum+365;
}
}
}
printf("%d\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm基础 闰年判断