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

Description 
当你还是18岁的时候,那个曾经一起追过的女孩刚好也是18岁,而且她的生日就要到了,你突然想到一个问题,是不是每个人到18岁生日所经过的天数都是一样的呢?我们来算一下吧 
Input 
首先输入一个整数n,表示有n组数据,格式是YYYY-MM-DD。 
Output 
对于每组数据输出一行,每行一个数,表示从出生到18岁生日所经过的天数。如果没有18岁生日,就输出-1。 
Sample Input


1992-2-1 
1988-3-5 
Sample Output

6575 
6574

题解:1、要求里的没有18岁生日仅仅指于闰年的2月29日出生,不代表还没有到18岁就是没有生日。 
2、计算18年有多少天,无非就是判断这18年里有几个闰年,出生那年过的天数加上18岁那年过的天数可以凑齐为一年。 
3、判断生日在2月28之前还是之后,如果在之后就判断出生那年的下一年开始,往后18年里几个闰年,之前就判断从出生那年开始,往后18年里有几个闰年。

#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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值