#include
struct data//该结构体存储输入的年月日
{
int y;
int m;
int d;
};
struct y_equals//该结构体用于存储年从小到大后相同年份的开始下标和结束下标
{
int head;
int end;
};
int main()
{
int o=0;
int z=1;
int p,q;
int equals;
int head,end;
int ye=0;//表示有多少种相同的年份
struct y_equals y_e[50]={0};//该结构体数组用于存储有多少种相同的年份,比如1999,1999,2000,2000,就有两种相同的年份
int b[50]={0},bb=0;
struct data k;
int j=0,i,m;
struct data a[100];
while(~scanf("%d%*c%d%*c%d",&a[j].m,&a[j].d,&a[j].y))j++;
for(i=0;i
{
for(m=i+1;m
{
if(a[m].y
{
k=a[m];
a[m]=a[i];
a[i]=k;
}
}
}
equals=a[0].y;
for(i=1;i
{
if(a[i].y==equals)
{
o=1;//把1赋值给o表示有相同的年份,
if(z==1)//z为1时,y_e开始接纳第一个相同年份的下标
y_e[ye].head=i-1,z=0; //把0赋值给z,说明即便后面的年份相同并且不会改变第一个相同年份的下标
if(i==j-1 && z==0)//当i为最后一组年月日并且z为0,即可能所有的年份都相同,这是就要把i赋值给y_e[ye].end,否则end没有赋值就会出错
{
ye+=1;
y_e[ye].end=i;//因为复制任务都是判断到年份与前一个年份不相同的时候再把该年份的下标赋值给end,该if语句用来防止输入的年份全相同时end没有赋值,引发错误
}
}
else
{
if(o==1)//o等于1表示前面有过相同的年份,o表示0则表示前面没有一个年份相同
{
o=0;
y_e[ye++].end=i-1;
equals=a[i].y; z=1;//说明年份不相同,把1赋值给z,这样就可以将新的年份输入到结构体y_e中
}
else
{equals=a[i].y; z=1;}
}
}
for(i=0;i
{
for(p=y_e[i].head;p<=y_e[i].end-1;p++)
{
for(q=p+1;q<=y_e[i].end;q++)
{
if(a[p].m>a[q].m)
{
k=a[p];
a[p]=a[q];
a[q]=k;
}
}
}
}
//以下就是年份和月份都排好序了,最后再给天数排序,在排序的时候要注意年份和月份都要相同
head=0;
for(i=1;i
{
if(a[i].y==a[head].y && a[head].m==a[i].m && i
continue;
else
{
for(p=head;p
{
for(q=p+1;q<=i-1;q++)
{
if(a[p].d>a[q].d)
{
k=a[p];
a[p]=a[q];
a[q]=k;
}
}
}
head=i;
}
}
for(i=0;i
{
if(a[i].m/10==0)
printf("0%d/%d/%d\n",a[i].m,a[i].d,a[i].y);
else
printf("%d/%d/%d\n",a[i].m,a[i].d,a[i].y);
}
return 0;
}