閏年を計算し、年と月によって日数を返す(3つの方法)
6244 ワード
ノートシリーズをめくって以前のノートを见ると、私は以前にもこれを知っていたような気がします...
方法1:推奨
方法2:
方法3:推奨
うるう年を計算する
int year;
scanf("%d",&year);
bool bFlag = year%(year%100?4:400)?false:true;
if(true == bFlag)
{
//
}
else
{
//
}
年と月による戻り日数
方法1:推奨
// :
#define MONTH 12
int GetDaysCount(const int year, const int month)
{
char days[MONTH] = {31,28,31,30,31,30,31,31,30,31,30,31};
if (month == 2)
{
bool bFlag = year%(year%100?4:400)?false:true;
if ( bFlag == 1) //29
{
days[1] = 29;
}
}
return days[month-1];
}
方法2:
///////////// ////////////////////
int a ;
int year = 2016;
scanf("%d",&a);
// 2
if (a == 2 )
{
bool bfalg = year%(year%100?4:400)?false:true;
if (bfalg)
{
printf("29
");
}
else
{
printf("28
");
}
}
else
{
bool bfalg = (a%2)?(a<8):(a>=8);
if (bfalg)
{
printf("31
");
}
else
{
printf("30
");
}
}
方法3:推奨
// 3:
int days;
switch (a)
{
case 2:
{
bool bfalg = year%(year%100?4:400)?false:true;
if (bfalg)
{
days = 29;
}
else
{
days = 28;
}
break;
}
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default: //1,3,5,7,8,10,12
days = 31;
break;
}
/////////////////////////////////