判断某日是该年第几天

 #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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值