按出生日期排序(结构体专题)

#include
#include
struct Student
{
int year;
int month;
int day;
int sum;
char name[10];
}boy[10];
int main()
{
int i,j,n,t;
scanf("%d",&n);
for(i=0;i {
scanf("%s %d %d %d",boy[i].name,&boy[i].year,&boy[i].month,&boy[i].day);
boy[i].sum=boy[i].month+boy[i].day;
}
for(j=0;j for(i=0;i if(boy[i].sum>boy[i+1].sum)
{
t=boy[i].sum;
boy[i].sum=boy[i+1].sum;
boy[i+1].sum=t;
}
for(i=0;i<n;i++)
printf("%s %d-%02d-%02d\n",boy[i].name,boy[i].year,boy[i].month,boy[i].day);

return 0;

}

"Sample Input"

3
Zhangling 1985 2 4
Wangliang 1985 12 11
Fangfang 1983 6 1

"Sample Output"

Zhangling 1985-02-04
Fangfang 1983-06-01
Wangliang 1985-12-11
求解 最后2个输出的顺序错误

Student t;
t=boy[i];
boy[i]=boy[i+1];
boy[i+1]=t;

你交换的仅仅是sum字段,而别的字段没有交换。