光头强的18岁生日(生日快乐)

题目描述
光头强的18岁生日要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,于是光头强给你打电话问你:“我的生日是1988-03-07,你知道我18岁生日的时候一共经历了多个日夜吗?”这时,你肯定会说不知道,但聪明的你怎么能说不知道呢!于是你很快的算出来了,告诉了光头强6574天!光头强听你说出了他的18岁生日的时候经历了6574个日夜可高兴了,于是他又问你,你知道我的18岁生日经历了6574个日夜,那你知道自己的吗?这时候你是不是觉得,光头强!你还是去砍树去吧!可作为当代优秀大学生你怎么能让这么爱学习的光头强去砍树呢!这是万万不可的!保护大自然不能让光头强去砍树了!所以善良的你又仔细的算了算告诉了光头强:“我的18岁生日经历了6575个日夜(假设你的生日为2002-03-01,别问为什么是这个日期!因为我不知道你啥时候过生日!要不然你告诉我我给你算?别想了自己来算算就知道自己的了!)。光头强知道自己的和你的,可是这么爱学习的光头强还想知道熊大熊二的!请你帮他计算一下!

输入
输入两个个出生日期,格式是YYYY-MM-DD。如光头强的生日是1988-03-07。

输出
三个整数,两个数据之间有一个空格,第一个整数是光头强的18生日经历了多少个日夜,第二和第三个整数分别是熊大,熊二的18生日经历了多少个日夜,如果熊大或熊二没有18岁生日,就输出-1

样例输入
1988-03-07 1988-03-07

样例输出
6574 6574 6574

#include<stdio.h>
int main()
{
    
    
    int y, m, d, y2, m2, d2, sum=0, sum2=0;
    scanf("%d-%d-%d", &y, &m, &d);
    scanf("%d-%d-%d", &y2, &m2, &d2);
    printf("6574 ");//先输出给出的光头强的18岁生日的天数 
    if (m == 2 && d == 29)//当输入日期为2月29就是不存在 , 输出-1 
        printf("-1 ");
    else
    {
    
    
        if (m <= 2 && y % 4 == 0 && y % 100 != 0 || y % 400 == 0)//判断出生当年是否是闰年, 如果是, 且在2月29之前, 则加上366天 否则加上365天 
            sum += 366;
        else
            sum += 365;
        for (int i = y + 1; i <= y + 16; i++)//将第二年到第十七年的天数判断后累加 
        {
    
    
            if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)//如果该年是闰年加上366否则加上365 
                sum += 366;
            else
                sum += 365;
        }
        if (m >= 3 && (y + 17) % 4 == 0 && (y + 17) % 100 != 0 || (y + 17) % 400 == 0)//判断第18年是否是闰年且出生月份在三月份或之后, 是则加上366否则加365 
            sum += 366;
        else
            sum += 365;
        printf("%d ", sum);//输出天数 
    }
    if (m2 == 2 && d2 == 29)//第二个年月日同上 
        printf("-1 ");
    else
    {
    
    
        if (m2 <= 2 && y2 % 4 == 0 && y2 % 100 != 0 || y2 % 400 == 0)
            sum2 += 366;
        else
            sum2 += 365;
        for (int i = y2 + 1; i <= y2 + 16; i++)
        {
    
    
            if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
                sum2 += 366;
            else
                sum2 += 365;
        }
        if (m2 >= 3 && (y2 + 17) % 4 == 0 && (y2 + 17) % 100 != 0 || (y2 + 17) % 400 == 0)
            sum2 += 366;
        else
            sum2 += 365;
        printf("%d ", sum2);//输出天数 
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_45858803/article/details/109828730