給定年月日,求今天是今年第幾天
#include<iostream>
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date(int Year, int Month, int Day);
bool JudgeRapYear(Date& A);
int JudgeDay(Date & B);
};
bool Date::JudgeRapYear(Date& A)//判斷當年是否爲閏年
{
if (A.year / 400 == 0||A.year % 100 != 0 && A.year % 4 == 0)
{
return true;
}
return false;
}
Date::Date(int Year, int Month, int Day)
{
year = Year;
month = Month;
day = Day;
}
int Date::JudgeDay(Date &B)
{
int Nowday = 0;
if (JudgeRapYear(B))
{
switch(B.month)
{
case 1:
if (B.day > 31)
return -1;
Nowday = 0 + B.day;
break;
case 2:
if (B.day > 29)
return -1;
Nowday = 31 + B.day;
break;
case 3:
if (B.day > 31)
return -1;
Nowday = 60 +B.day;
break;
case 4:
if (B.day > 30)
return -1;
Nowday = 91+B.day;
break;
case 5:
if (B.day > 31)
return -1;
Nowday = 121+B.day;
break;
case 6:
if (B.day > 30)
return -1;
Nowday = 152+B.day;
break;
case 7:
if (B.day > 31)
return -1;
Nowday = 182+B.day;
break;
case 8:
if (B.day > 31)
return false;
Nowday = 213+B.day;
break;
case 9:
if (B.day > 30)
return -1;
Nowday = 244+B.day;
break;
case 10:
if (B.day > 31)
return -1;
Nowday = 274+B.day;
break;
case 11:
if (B.day > 30)
return -1;
Nowday = 305+B.day;
break;
case 12:
if (B.day > 31)
return -1;
Nowday = 335+B.day;
break;
default:
return -1;
}
}
else
{
switch (B.month)
{
case 1:
if (B.day > 31)
return -1;
Nowday = 0 + B.day;
break;
case 2:
if (B.day > 28)
return -1;
Nowday = 31 + B.day;
break;
case 3:
if (B.day > 31)
return -1;
Nowday = 59 + B.day;
break;
case 4:
if (B.day > 30)
return -1;
Nowday = 90 + B.day;
break;
case 5:
if (B.day > 31)
return -1;
Nowday = 120 + B.day;
break;
case 6:
if (B.day > 30)
return -1;
Nowday = 151 + B.day;
break;
case 7:
if (B.day > 31)
return -1;
Nowday = 181 + B.day;
break;
case 8:
if (B.day > 31)
return -1;
Nowday = 212 + B.day;
break;
case 9:
if (B.day > 30)
return -1;
Nowday = 243 + B.day;
break;
case 10:
if (B.day > 31)
return -1;
Nowday = 273 + B.day;
break;
case 11:
if (B.day > 30)
return -1;
Nowday = 304 + B.day;
break;
case 12:
if (B.day > 31)
return -1;
Nowday = 334 + B.day;
break;
default:
return -1;
}
}
return Nowday;
}
int main()
{
int Y, M, D;
cout << "輸入年月日" << endl;
cin >> Y >> M >> D;
Date A(Y, M, D);
int p = A.JudgeDay(A);
cout << p;
system("pause");
return 0;
}
將閏年和平年區分開就好,只要將日期類做出來就能順利解決,但是時間問題一定要計算好。