ACM - 1 - base - Data Problem

73 阅读1分钟

1.判断平闰年

Leap:year % 4 == 0 && year % 100 == 0
bool check (int n)
{
if(n%4 ==0 && n %100 ==0)
 return true;
else
 return false;
}

2.日期合法

Accesiable:
            common year - 365
            leap   year - 366
            闰年每四年一次
            30 days month :
            {4,6,9,11}
            31 days month :
            {1,3,5,7,8,10,12}
            2 month:
            leap   : 29
            common : 28
#include <iostream>
using namespace std;
int month_days[13][2]={{0,0},{31,31},{29,28},{30,30},{31,31},{30,30},{31,31},{30,30}, {31,31},{30,30},{31,31},{30,30},{31,31}};
bool check_leap (int year)
{
if(year % 4 ==0&&year %100 ==0)
	return true;
else
	return false;
}
bool check_year (int year,int month,int day)
{
int f=0;
if(month>=1&&month<=12)
{
	if(check_leap(year))
		f=1;
	if(day <= month_days [month][f] && day>0)
		return true;
	else
		return false;		
}
else
	return false;
}
int main ()
{
int year,month,day;
scanf ("%d-%d-%d",&year,&month,&day);
printf("%d",check_year(year,month,day));
return 0;
}

3.提取日期数

*year = n / 10000;
*month = n % 10000 / 100;
*day  = n % 100;