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
", dayPast);
        printf("%d
", dayTh);
        
    }
    
    return 0;
}  

  

原文地址:https://www.cnblogs.com/Rosanna/p/3436482.html