大佬求助

P1104 生日

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


|