1.日期问题
#include<bits/stdc++.h>
using namespace std;
/*
1.枚举起始日期到终止日期
2.判断日期是否合法
3.判断合法的日期是否符合输入
*/
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//定义一个代表每个月的天数的数组
bool check(int year,int month,int day)//判断日期是否合法的模板
{
if(month==0||month>12)
return false;
if(day==0||month!=2&&day>days[month])
return false;
if(month==2) //特判2月
{
int temp=year%100!=0&&year%4==0||year%400==0;
//如果是闰年则为1,如果是平年则为0
if(day>days[2]+temp) //如果大于闰年的2月天数(28+1)
return false;
}
return true;
}
int main()
{
int a,b,c;
scanf("%d/%d/%d",&a,&b,&c);
//使用scanf和printf方便格式化输入和输出
for(int i=19600101;i<=20591231;i++)
//枚举起始日期到终止日期
{
int year=i/10000,month=i/100%100,day=i%100;
if(check(year,month,day))//判断日期是否合法
{
//判断合法的日期是否符合输入
if(year%100==a&&month==b&&day==c ||
year%100==c&&month==b&&day==a ||
year%100==c&&month==a&&day==b)
printf("%d-%02d-%02d\n",year,month,day);
//02表示占两位,不足两位的按两位补齐
}
}
return 0;
}