1. 程式人生 > >hdu 2005 第幾天?(c語言)

hdu 2005 第幾天?(c語言)

hdu 2005 第幾天?

link

題目描述

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 193611 Accepted Submission(s): 68291

Problem Description 給定一個日期,輸出這個日期是該年的第幾天。

Input 輸入資料有多組,每組佔一行,資料格式為YYYY/MM/DD組成,具體參見sample input ,另外,可以向你確保所有的輸入資料是合法的。

Output 對於每組輸入資料,輸出一行,表示該日期是該年的第幾天。

Sample Input 1985/1/20 2006/3/12

Sample Output 20 71

Author lcy

問題解答

#include <stdio.h>

int main()
{
    int year,month,day;
    while(scanf("%d/%d/%d",&year,&month,&day)!=EOF)
    {
        if(((year%4==0)&&(year%100!=0))||(year%400==0))
        {
            int amount=0;
            for(int i=1;i<month;i++)
            {
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                    amount+=31;
                if(i==4||i==6||i==9||i==11)
                    amount+=30;
                if(i==2)
                    amount+=29;
            }
            printf("%d\n",amount+day);
        }
        else
        {
            int amount=0;
            for(int i=1;i<month;i++)
            {
                if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
                    amount+=31;
                if(i==4||i==6||i==9||i==11)
                    amount+=30;
                if(i==2)
                    amount+=28;
            }
            printf("%d\n",amount+day);
        }
    }
}

筆記

  1. 閏年的定義:第一種閏年是可以被4整除但不能被100整除;第二種閏年是可以被400整除。
  2. 這個程式碼唯一可取的應該是邏輯思維,這樣寫要是被老師看到會被諷刺死的,優秀的程式碼應該是視覺化程度很高的,通過呼叫函式進行簡化,並且分塊呈現。不過好在程式短,可以一口氣吞下,而且也AC了,就懶得改了(gif.哭笑)