1. 程式人生 > >【OJ練習】查詢某一天是一年中的第幾天

【OJ練習】查詢某一天是一年中的第幾天

·         編寫一個函式,計算輸入的某天(輸入格式是年月日)是一年中的第幾天,並返回結果。例如輸入2012、2、1,那麼返回成功且天數為32。

詳細描述:

·         只需要完成該函式功能演算法,中間不需要有任何IO的輸入輸出,注意對輸入的保護,如果輸入非法則返回失敗,否則返回成功

·         程式設計實現空白處理的填寫。

介面設計及說明:

/*****************************************************************************

Description   : 查詢某一天是一年中的第幾天

Input Param   : cunsigned int year

:年

          unsigned int month:月

          unsigned int day:日

Output Param  : int *pSumOfDays:輸出結果第幾天

Return Value  : 查詢成功或失敗/*成功返回0,失敗返回1*/

*****************************************************************************/

intCalcHowManyDays(unsignedintYearunsignedintMonthunsignedintDayunsignedint *pSumOfDays

);

【輸入】

unsigned int year: 

unsigned int month:月

unsigned int day: 

【輸出】

int *pSumOfDays:輸出結果第幾天

【返回】 查詢成功或失敗

【注意】 只需要完成該函式功能演算法,中間不需要有任何IO的輸入輸出

程式碼:

/*****************************************************************************

Description   : 查詢某一天是一年中的第幾天

Input Param   : cunsigned int year:年

                            unsigned int month

:月

                            unsigned int day:日

Output Param  : int *pSumOfDays:輸出結果第幾天

Return Value  : 查詢成功或失敗

*****************************************************************************/

int CalcHowManyDays(unsigned int Year, unsigned int Month, unsigned int Day, unsigned int *pSumOfDays)

{

    /* 在這裡實現功能,將結果填入輸入陣列中 */

       int Num1[12]={31,29,31,30,31,30,31,31,30,31,30,31};

       int Num2[12]={31,28,31,30,31,30,31,31,30,31,30,31};

       int i,Num=0;

       if(pSumOfDays==NULL)

       {

              return 1;

       }

       if(Year<1||Month<1||Day<1)

              return 1;

       if(Year%4==0)

       {

              if(Month>1)

              {

                     for(i=1;i<Month;i++)

                            Num+=Num2[i-1];

              }

       }

       else

       {

              if(Month>1)

              {

                     for(i=1;i<Month;i++)

                            Num+=Num1[i-1];

              }

       }

       Num=Num+Day;

       *pSumOfDays=Num;

    return 0;/*成功返回0,失敗返回1*/

}