您的位置:首页 > 其它

判断某日是该年第几天

2009-11-16 18:00 211 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: