天天看點

判斷某日是該年第幾天

 #include <iostream>

using namespace std;

struct Infor

{

 int nYear;

 int nMonth;

 int nDay;

 int nNum;

 struct Infor *next;

};

int main()

{       // 1 2   3   4   5     6   7    8    9  10    11   12

 const int nArray[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};

 int i;     // 31   28  31  30  31  30    31   31   30  31   30   31

 struct Infor *pHead = NULL, *pTail = NULL, *p = NULL;

 freopen("1.txt", "r", stdin);

 pHead = new struct Infor;

 pHead->next = NULL;

 pTail = pHead;

 cin >> i;

 for (int j = 0; j < i; j++)

 {

  p = new struct Infor;

  p->next = NULL;

  cin >> p->nYear >> p->nMonth >> p->nDay;

  p->nNum = j+1;

  pTail->next = p;

  pTail = p;

 }

 p = pHead->next;

 while (NULL != p)

 {

  int   nTemp = nArray[p->nMonth-1] + p->nDay;

  bool        bRet  = false;

  if (0 == p->nYear || 0 == p->nMonth || 0 == p->nDay)

  {

   nTemp = 0;

   goto Exit0;

  }

  if ((0 == p->nYear % 172800) && (0 == p->nYear % 86400))      

  {  

   bRet = true;

   goto Exit0;

  }

  if (((0 == p->nYear % 4) && (0 != p->nYear % 100)) || ((0 == p->nYear % 400)&&(0 != p->nYear % 3200 )))       

  {         

   bRet = true;

  }

Exit0:

  if (bRet)

  {

   cout << "CASE " << p->nNum << ": " << ((2 < p->nMonth) ? (nTemp+1) : nTemp) << endl;

  }

  else

  {

   cout << "CASE " << p->nNum << ": " << nTemp << endl;

  }

  p = p->next;

 }

 return 0;

}

繼續閱讀