【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(unsignedintYear, unsignedintMonth, unsignedintDay, unsignedint *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*/
}