分析:我们输入的AA/BB/CC有三种情况,所以我们编写一个函数,来判断三个数字作为 年 月 日是否合法,合法就输出,不合法就终止,还要查重,如果有相同的时间,就不重复打印,具体看代码注释。
#include <stdio.h>
int num[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年
int p(int a){
if((a%4==0&&a%100!=0)||a%400==0)return 1;//闰年
else return 0;//平年
}
int f(int a){//判断年是闰年还是平年
if(a>=60)return 1900+a;
else return 2000+a;
}
void sc(int AA,int BB,int CC){
if(AA<100){//年-月-日 判断
if(p(f(AA==0)))num[2]=28;//判断是平年还是闰年,然后来决定二月的天数
else num[2]=29;//闰年
if(BB<=12){
if(CC<=num[BB]){
printf("%d-%02d-%02d",f(AA),BB,CC);
return ;
}
}
}
return ;
}
int main(){
int m,n,j,i,AA,BB,CC,s=0;
scanf("%d%*c%d%*c%d",&AA,&BB,&CC);
sc(AA,BB,CC);//假如输入的是 年 月 日
if(AA!=CC){
printf("\n");不能重复,所以要进行判断
sc(CC,BB,AA);//假如输入的是 月 日 年
}
if(AA!=BB){//不能重复,所以要进行判断
printf("\n");
sc(CC,AA,BB);//假如输入的是 日 月 年
}
return 0;
}