0分求助
by GSNB123 @ 2023-01-26 10:05:08
@GSNB123\
可以看出这位大佬是想用冒泡排序对数组进行排序。本蒟蒻目前发现了以下小问题:\
第$18$行应该循环$n$次。建议改为i<=n-1。\
第$29$行应该在出生年份相等的情况下再比较月份,建议改为if(stu[j].y==stu[j].y&&stu[j].m>stu[j+1].m)\
第$36$行应该在出生年份和月份相等的情况下再比较日期。建议改为if(stu[j].y==stu[j].y&&stu[j].m==stu[j+1].m&&stu[j].d>stu[j+1].d)\
看看这样行不行。
by xiongzecheng @ 2023-01-26 11:17:20
```c
#include <stdio.h>
struct t
{
char a[25];
int y;
int m;
int d;
}stu[102];
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s %d %d %d",stu[i].a,&stu[i].y,&stu[i].m,&stu[i].d);
}
struct t stud;
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(stu[j].y>stu[j+1].y)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
else if(stu[j].y==stu[j+1].y)
{
if(stu[j].m>stu[j+1].m)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
else if(stu[j].m==stu[j+1].m)
{
if(stu[j].d>stu[j+1].d)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
if(stu[j].d==stu[j+1].d)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
}
}
}
}
for(i=0;i<n;i++)
{
printf("%s\n",stu[i].a);
}
return 0;
}
```
@[xiongzecheng](/user/775277) 谢谢大佬,但有一个点过不了
by GSNB123 @ 2023-01-27 20:27:40