計算閏年, 根據年份和月份返回天數(3種方法)
阿新 • • 發佈:2019-02-04
翻閱筆記系列
看以前的筆記,感覺就是 我以前還了解過這個。。。
計算閏年
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\n");
}
else
{
printf("28\n");
}
}
else
{
bool bfalg = (a%2)?(a<8):(a>=8);
if (bfalg)
{
printf("31\n" );
}
else
{
printf("30\n");
}
}
方法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;
}
/////////////////////////////////