/*楼主看看是不是这个意思,不过这里的S,C都没有多大用处*/
#include<stdio.h>
#define S 3
#define C 2
#define N 50
//####定义学生信息结构体####//
struct student
{
int id;
char name[15];
char sex[5];
float achieve[C];
float average;
};
void input();
int re_input(student stus[]);
void list(student stus[],int n);
void display(student stus[],int n);
//######主函数体开始#######//
main()
{
char ch;
student stus[N];
int n;
printf("\n┠─────学生成绩系统─────┨\n");
n=re_input(stus);
printf("排序前的顺序为:\n");
fflush(stdin);
display(stus,n);
printf("排序后的顺序为:\n");
list(stus,n);
}
//####学生成绩录入函数####//
int re_input(student stus[])
{
int n,count=0;
int i;
char ch;
do
{
for(n=0;n<S;n++)
{
printf("\n\t请输入学员的详细信息");
printf("\n\n请输入学号:\t");
scanf("%d",&stus[n].id);
printf("\n请输入学生姓名:\t");
fflush(stdin);
gets(stus[n].name);
printf("\n请输入学生性别:\t");
fflush(stdin);
gets(stus[n].sex);
printf("\n请输入学生的 %d 门课的成绩:\t",C);
fflush(stdin);
for(i=0,stus[n].average=0;i<C;i++)
{
scanf("%f",&stus[n].achieve[i]);
stus[n].average+=stus[n].achieve[i];
}
stus[n].average/=C;
printf("这个平均分为%.2f",stus[n].average);
count++;
}
printf("\n\n是否继续录入信息?(是 Y/否 N)\n");
fflush(stdin);
ch=getchar();
}while(ch=='y'||ch=='Y');
return(count);
}
//####学生信息简单显示函数####//
void display(student stus[],int n)
{
int j;
printf("\n学号\t姓名\t性别\t平均成绩\n");
for(j=0;j<n;j++)
printf("%d\t%s\t%s\t%.2f\n",stus[j].id,stus[j].name,stus[j].sex,stus[j].average);
}
//####学生列表排序函数####//
void list(student stus[],int n)
{
int i,j;
struct student temp;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(stus[j].average<stus[j+1].average)
{
temp=stus[j+1];
stus[j+1]=stus[j];
stus[j]=temp;
}
}
}
for(j=0;j<n;j++)
printf("%d\t%s\t%s\t%.2f\n",stus[j].id,stus[j].name,stus[j].sex,stus[j].average);
}
倚天照海花无数,流水高山心自知。