对学生成绩的管理,键盘录入学生成绩,计算平均值并按平均值排序,将排好序的学生信息输出。

//对学生的成绩管理。
//1.录入学生信息(学号,姓名,三门成绩)。
//2.计算每个学生3门成绩的平均值。
//3.按照平均值对学生进行升序排序。
//4.输出排好序的学生信息。
#include
#define N 20
struct student{
    int id;
    char name[20];
    int score[3];
    double aver;
};
void Input(struct student st[],int n){                //从键盘录入n个学生信息 
    int i,j;
    for(i=0;i         printf("请输入第%d个学生的信息:",i+1);
        scanf("%d",&st[i].id);
        scanf("%s",&st[i].name);
        for(j=0;j<3;j++){
            scanf("%d",&st[i].score[j]);            
        }
    }
}
void Aver(struct student st[],int n){                //计算该n个学生的平均成绩 
    int i,j;
    for(i=0;i         int s=0;
        printf("%d号学生的平均成绩为:",st[i].id);
        for(j=0;j<3;j++){                            //同一个学生的3个成绩 
            s=s+st[i].score[j];                        
        }
        st[i].aver=s/3.0;                            //3.0是为了不丢失数据精度 
        printf("%.2lf",st[i].aver);
        printf("\n");
    }
}
/*简单交换法排序
 根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置
 换交排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动 
 不稳定 
 */
void Sort(struct student st[],int n){
    int i,j,x;
    struct student t;
    for(i=0;i         for(j=i+1;j             if(st[j].aver                 t=st[i];
                st[i]=st[j];
                st[j]=t;
            }
        }
        
    }

void Output(struct student st[],int n){                //输出学生信息 
    int i,j;
    for(i=0;i         printf("%-4d",st[i].id);
        printf("%s",st[i].name);
        for(j=0;j<3;j++){
            printf("%4d",st[i].score[j]);
        }
        printf("\t");
        printf("%.2lf",st[i].aver);
        printf("\n");
    }
}
int main(){
    int m;
    struct student st[N];
    printf("请输入学生人数:");
    scanf("%d",&m);
    printf("请输入所有学生的信息:\n");
    Input(st,m);
    printf("\n");
    printf("学生的平均成绩为:\n");
    Aver(st,m);
    printf("\n");
    Sort(st,m);
    printf("输出按平均成绩排序后学生的信息:\n");
    printf("id  name      s1  s2  s3        aver\n");    //打印表头 
    Output(st,m);
    printf("\n");

 

控制台打印信息如图:对学生成绩的管理,键盘录入学生成绩,计算平均值并按平均值排序,将排好序的学生信息输出。_第1张图片

你可能感兴趣的:(C语言)