数据结构上机题目3--学生信息排序

来源:互联网 发布:软件功能需求确认书 编辑:程序博客网 时间:2024/05/17 13:10
/************************************************************************** author:crazy_石头* algorithm:bubble_sort* date:2013/10/20* 程序功能:对学生信息进行排序**************************************************************************/#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int maxn=5;struct Stu{    int num;    char name[maxn];    char gendar[maxn];    int grade1;    int grade2;    int grade3;    int aver;}stu[maxn];inline void debug(){    puts("Oh,god,where on earth is wrong?");}inline void bubble_sort1(Stu A[],int n){    for(int i=0;i<n;i++)    {        for(int j=0;j<n-1-i;j++)        {            if(A[j].num>A[j+1].num)            {                Stu tmp=A[j+1];                A[j+1]=A[j];                A[j]=tmp;            }        }    }}inline void bubble_sort2(Stu A[],int n){    for(int i=0;i<n;i++)    {        for(int j=0;j<n-1-i;j++)        {            if(strcmp(A[j].name,A[j+1].name)>0)            {                Stu tmp=A[j+1];                A[j+1]=A[j];                A[j]=tmp;            }        }    }}inline void bubble_sort3(Stu A[],int n){    for(int i=0;i<n;i++)    A[i].aver=(A[i].grade1+A[i].grade2+A[i].grade3)/3;    for(int i=0;i<n;i++)    {        for(int j=0;j<n-1-i;j++)        {            if(A[j].aver>A[j+1].aver)            {                Stu tmp=A[j+1];                A[j+1]=A[j];                A[j]=tmp;            }        }    }}inline void solve(Stu A[],int n){    float res1=0,res2=0,res3=0;    for(int i=0;i<n;i++)    {        res1+=A[i].grade1;    }    printf("这%d名同学第一门课程的平均成绩是:%.2lf\n",n,res1/n);    for(int i=0;i<n;i++)    {        res2+=A[i].grade2;    }    printf("这%d名同学第二门课程的平均成绩是:%.2lf\n",n,res2/n);    for(int i=0;i<n;i++)    {        res3+=A[i].grade3;    }    printf("这%d名同学第三门课程的平均成绩是:%.2lf\n",n,res3/n);}int main(){    freopen("student.txt","r",stdin);    for(int i=0;i<5;i++)    scanf("%d%s%s%d%d%d",&stu[i].num,stu[i].name,stu[i].gendar,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3);    printf("按学号排序结果如下:\n");    bubble_sort1(stu,maxn);    for(int i=0;i<5;i++)    printf("%d\t%s\t%s\t%3d%3d%3d\n",stu[i].num,stu[i].name,stu[i].gendar,stu[i].grade1,stu[i].grade2,stu[i].grade3);    printf("按姓名排序结果如下:\n");    bubble_sort2(stu,maxn);    for(int i=0;i<5;i++)    printf("%d\t%s\t%s\t%3d%3d%3d\n",stu[i].num,stu[i].name,stu[i].gendar,stu[i].grade1,stu[i].grade2,stu[i].grade3);    printf("按平均成绩排序结果如下:\n");    bubble_sort3(stu,maxn);    for(int i=0;i<5;i++)    printf("%d\t%s\t%s\t%3d%3d%3d%3d\n",stu[i].num,stu[i].name,stu[i].gendar,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[i].aver);    solve(stu,maxn);    return 0;}



 

原创粉丝点击