程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩

函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。
#include <stdio.h>
#include <string.h>
struct student
{ longsno;
charname[10];
floatscore[3];
};
void fun(struct student a[], int n)
{ //请完善该部分代码 }
main()
{ structstudent s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi",85, 70, 78}, {10003,"CaoKai", 75, 60, 88},{10004,"FangFang", 90, 82, 87}};
int i, j;
printf("\n\nThe original data :\n\n");
for (j=0; j<4;j++)
{ printf("\nNo: %ld Name: %-8s Scores:",s[j].sno, s[j].name);
for(i=0; i<3; i++)
printf("%6.2f ",s[j].score[i]);
printf("\n");
}
fun(s, 4);
printf("\n\nThe data after sorting :\n\n");
for (j=0; j<4;j++)
{ printf("\nNo: %ld Name: %-8s Scores:",s[j].sno, s[j].name);
for(i=0; i<3; i++)
printf("%6.2f ",s[j].score[i]);
printf("\n");
}
}

第1个回答  2014-12-26
void fun(struct student a[], int n)
{   //请完善该部分代码
int i, j;
for(i = 0; i < n - 1; i++)
for(j = 0; j < n - 1 - i; j++)
if(strcmp(a[j].name , a[j + 1].name) > 0) {
struct student tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}

本回答被提问者和网友采纳
相似回答