17515090521 发表于 2019-10-27 20:55:36

学生管理系统的排序问题

如图所示,我这个排序该怎么修改啊?按总分从大到小的顺序排

17515090521 发表于 2019-10-27 20:55:37

#include<stdio.h>
#include<string.h>
struct Student      //定义结构体类型
{
        int number;
        char name;
        float chinese;
        float math;
        float english;
        floatzf;
          
};
struct Student P;//确定结构体;
//voidDxuesheng(struct Student P[],int p );
int xuesheng(struct Student P[],int p);   //声明int函数
#define N 99//定义一个名称为N为99的常量
struct Student tmp;
int i;
int s =0;    //学生信息s
int xuesheng(struct Student P[],int p)   //定义 in函数
{
    float z;
        int m = 0;   //输入学号判断,0-输入结束,1-继续
        printf("请输入学生信息(提示:学号为0时结束)\n");
        while (!m )   //如果输入没有结束,循环继续
        {
          printf("学号:");
                scanf("%d",&P.number);    //输入学号
                if (P.number==0)   //判断输入学号是否为0,为0结束
                {
                        return;
               }
               if (m==1)       //不懂
               break;
               printf("姓名:");
               scanf("%s",P.name);
               printf("语文成绩:");
               scanf("%f",&z);
               P.chinese = z;
               printf("数学成绩:");
               scanf("%f",&z);
               P.math = z;
               printf("英语成绩:");
               scanf("%f",&z);
               P.english = z;
             P.zf=(P.english+P.chinese+P.math);
              s++;
                }
                return s;
}

intAxuesheng(struct Student P[],int p )
{
    int i;         //定义一个i用来显示多少学生
    for(i=0;i<s;i++)   //循环显示学生信息
        {
                printf("学号:%d,姓名:%s,语文:%.1f,数学:%.1f,英语:%.1f,总分:%.1f\n",P.number,P.name,P.chinese,P.math,P.english,P.zf);
        }
        }
voidBxuesheng(struct Student P[],int p )
{
                int i,j,k;
          struct Student tmp={0};
          for(i=0;i<N-1;i++)
                {
                        if(P.number<P.number)
                        {
                                tmp = P;
                                P = P;
                                P = tmp;
                       }
                        }
                printf("====================按总成绩排名=============\n");
                for(j=0;j<N;j++)
                {
                   printf("该学生的学号为:%d\n",P.number);
                   printf("该学生的姓名为:");
                   for(k= 0;k<5;k++)
                   {
                          printf("%s",P.name);
                        }       
                  printf("该学生的语文成绩为:%.1f\n",P.chinese);
                  printf("该学生的数学成绩为:%.1f\n",P.math);
                  printf("该学生的英语成绩为:%.1f\n",P.english);
                  printf("该学生的总成绩为:%.1f\n",P.zf);
                }
                getchar();
        }

AmosAlbert 发表于 2019-11-1 21:43:49

定义一个max,遍历比较赋值,打擂台
页: [1]
查看完整版本: 学生管理系统的排序问题