/*楼主看看是不是这个意思,不过这里的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);
}

倚天照海花无数,流水高山心自知。



 
											






 
	    

 
	

