该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
// 成绩排序系统: #include
#include
#include
#include
#include
#include
void menu();
void meihua(); struct List /*节点结构声明*/
{
long Number;
int score[5];
float average;
struct List *next;
};
typedef struct List Node;
typedef Node *Link; struct student /*结构体数组声明*/
{
long Number_;
int score_[5];
float average_;
}student[45]; int M=45; /*初始学生总数*/ void Free_List(Link Head) /*释放链表*/
{
Link Pointer;
while(Head!=NULL)
{
Pointer=Head;
Head=Head->next;/*消掉下一个节点*/
free(Pointer);
}
} int mysrand(int n) /*成绩生成函数*/
{
int j,k;
for(j=0;j<45;j++)
{
student[j].Number_=2011000001+j+n*1000;
for(k=0; k<5;k++)
{
student[j].score_[k]=rand()%100+1;
}
}
return 0;
} float average() /*平均成绩计算函数,求每个学生的平均成绩*/
{
int i,j;
float sum;
for(i=0;i<45;i++)
{
sum=0.0;
for(j=0;j<5;j++)
{
sum=sum+student[i].score_[j];
}
student[i].average_= sum/5;
}
return 0;
} int sort() /*冒泡排序法*/
{
int i,j,k,t;
float tmp;
for (i=0;i<45-1;i++)
{
for (j=0;j<45-i-1;j++)
{
if (student[j].average_ < student[j+1].average_)
{
tmp = student[j].average_;
student[j].average_ = student[j+1].average_;
student[j+1].average_ = tmp;
for(k=0;k<5;k++)
{
t = student[j].score_[k];
student[j].score_[k] = student[j+1].score_[k];
student[j+1].score_[k] = t;
}
t = student[j].Number_;
student[j].Number_ = student[j+1].Number_;
student[j+1].Number_= t;
}
}
}
return 0;
} int Sort() /*选择排序法*/
{
int i,j,k,m,t;
float tmp;
for(i=0;i<45-1;i++)
{
k=i;
for(j=i+1;j<45;j++)
{
if(student[k].average_ < student[j].average_)
{
k=j;
}
if(k!=i)
{
tmp = student[i].average_;
student[i].average_ = student[k].average_;
student[k].average_ = tmp;
t = student[i].Number_;
student[i].Number_ = student[k].Number_;
student[k].Number_= t;
for(m=0;m<5;m++)
{
t = student[i].score_[m];
student[i].score_[m] = student[k].score_[m];
student[k].score_[m] = t;
}
}
}
}
return 0;
}
Link Create_List_sort(Link Head,int n) /*建立冒泡排序链表*/
{
Link Pointer,point;
int i,j;
Head=(Link)malloc(sizeof(Node));/*内存配置*/
if(Head==NULL)
printf("allocate failure!\n");/*配置失败*/
else
{
mysrand(n);
average();
sort();
Head->average=student[0].average_;
Head->Number=student[0].Number_;