C++判断閏年
14215 ワード
#include<iostream>
using namespace std;
#define YEARERROR -1
#define MONTHERROR -2
#define DAYERROR -3
int day[13] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 }; //
int Judgmentinput(int const Year, int Month, int const Day);
bool Leapyear(int const Year);
void Calculateddays(int const Year,int Month, int const Day);
void Subject();
int main()
{
Subject();
return 0;
}
bool Leapyear(int const Year)
{
return ((0 == Year % 4 && 0 != Year % 100) || 0 == Year % 400);
}
void Calculateddays(int const Year,int Month, int const Day)
{
if (Leapyear(Year))
{
int count = 0;
for (int i = 1; i < Month; ++i)
{
if (2 == i)
{
i = 0;
}
count += day[i];
}
count += Day;
cout << count;
}
else
{
int count = 0;
for (int i = 0; i < Month; ++i)
{
count += day[i];
}
count += Day;
cout << count;
}
}
int Judgmentinput(int const Year, int Month, int const Day)
{
if (2==Month&&Leapyear)
{
Month = 0;
}
if (Year < 1)
{
return YEARERROR;
}
if (Month < 1 || Month>12)
{
return MONTHERROR;
}
if (Day<1 || Day>day[Month])
{
return DAYERROR;
}
}
void Subject()
{
int Year;
int Month;
int Day;
int flag;
char ch;
do
{
cout << " ";
cin >> Year >> Month >> Day;
flag = Judgmentinput(Year, Month, Day);
switch (flag)
{
case -1:cout << "YEARERRPR" << endl;
break;
case -2:cout << "MONTHERROR" << endl;
break;
case -3:cout << "DAYERROR" << endl;
break;
default:
Calculateddays(Year, Month, Day);
break;
}
cout << " Y " << endl;
getchar();
cin >> ch;
} while ('Y' == ch || 'y' == ch);
}