1008-第几天

描述

 

在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。

给定公元2000年1月1日后的某年某月某日(包括2000年1月1日),你的任务:(1)给出这一天从公元2000年1月1日开始逝去的天数,(2)判断这一天是当年的第几天。

 

输入

 

输入包含若干行,每行包含三个空格间隔的正整数,它们分别表示年、月、日。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。

 

输出

 

多组,每组两行,分别为每行输入所代表的一天从公元2000年1月1日开始逝去的天数、在当年的第几天。

 

样例输入

2000 1 1

2009 3 14

-1

样例输出

0

1

3360

73

#include"stdio.h"



int main(void)

{

    int i;

    int year, month, day;

    int dayPast, dayTh;

    

    

    

    while(scanf("%d %d %d", &year, &month, &day) && year!=-1)

    {

        dayPast = 0;

        dayTh = 0;

        for(i = 2000; i < year; i++) //??????366???

        {

            if(((i%4==0)&&(i%100!=0)) || (i%400==0))

            {

                dayPast += 366;

            }

            else

            {

                dayPast += 365;

            }

        }

        

        dayTh += day;

        switch(month-1)

        {

        case 11:

            dayTh += 30;

        case 10:

            dayTh += 31;

        case 9:

            dayTh += 30;

        case 8:

            dayTh += 31;

        case 7:

            dayTh += 31;

        case 6:

            dayTh += 30;

        case 5:

            dayTh += 31;

        case 4:

            dayTh += 30;

        case 3:

            dayTh += 31;

        case 2: 

            if(((year%4==0)&&(year%100!=0)) || (year%400==0))

            {

                dayTh += 29;

            }

            else

            {

                dayTh += 28;

            }

        case 1:

            dayTh += 31;

        }

        dayPast += (dayTh-1);

        

        printf("%d\n", dayPast);

        printf("%d\n", dayTh);

        

    }

    

    return 0;

}  

  

你可能感兴趣的:(1008-第几天)