鱼C论坛

 找回密码
 立即注册
查看: 2881|回复: 2

学生管理系统的排序问题

[复制链接]
发表于 2019-10-27 20:55:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如图所示,我这个排序该怎么修改啊?按总分从大到小的顺序排
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-10-27 20:55:37 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<string.h>
  3. struct Student      //定义结构体类型
  4. {
  5.         int number;
  6.         char name[5];
  7.         float chinese;
  8.         float math;
  9.         float english;
  10.         float  zf;
  11.           
  12. };
  13. struct Student P[99];  //确定结构体;
  14. //void  Dxuesheng(struct Student P[],int p );
  15. int xuesheng(struct Student P[],int p);   //声明int函数
  16. #define N 99  //定义一个名称为  N  为99的常量
  17. struct Student tmp;
  18. int i;
  19. int s =0;    //学生信息s
  20. int xuesheng(struct Student P[],int p)     //定义 in函数
  21. {
  22.     float z;
  23.         int m = 0;   //输入学号判断,0-输入结束,1-继续
  24.         printf("请输入学生信息(提示:学号为0时结束)\n");
  25.         while (!m )     //如果输入没有结束,循环继续
  26.         {
  27.             printf("学号:");
  28.                 scanf("%d",&P[s].number);    //输入学号
  29.                 if (P[s].number==0)   //判断输入学号是否为0,为0结束
  30.                 {
  31.                         return;
  32.                  }
  33.                  if (m==1)       //不懂
  34.                  break;
  35.                  printf("姓名:");
  36.                  scanf("%s",P[s].name);
  37.                  printf("语文成绩:");
  38.                  scanf("%f",&z);
  39.                  P[s].chinese = z;
  40.                  printf("数学成绩:");
  41.                  scanf("%f",&z);
  42.                  P[s].math = z;
  43.                  printf("英语成绩:");
  44.                  scanf("%f",&z);
  45.                  P[s].english = z;
  46.              P[s].zf=(P[s].english+P[s].chinese+P[s].math);
  47.               s++;
  48.                 }
  49.                 return s;
  50. }

  51. int  Axuesheng(struct Student P[],int p )
  52. {
  53.     int i;           //定义一个i用来显示多少学生
  54.     for(i=0;i<s;i++)     //循环显示学生信息
  55.         {
  56.                 printf("学号:%d,姓名:%s,语文:%.1f,数学:%.1f,英语:%.1f,总分:%.1f\n",P[i].number,P[i].name,P[i].chinese,P[i].math,P[i].english,P[i].zf);
  57.         }
  58.         }
  59. void  Bxuesheng(struct Student P[],int p )
  60. {
  61.                 int i,j,k;
  62.             struct Student tmp={0};
  63.             for(i=0;i<N-1;i++)
  64.                 {
  65.                         if(P[i].number<P[i+1].number)
  66.                         {
  67.                                 tmp = P[i];
  68.                                 P[i] = P[i+1];
  69.                                 P[i+1] = tmp;
  70.                          }
  71.                         }
  72.                 printf("====================按总成绩排名=============\n");
  73.                 for(j=0;j<N;j++)
  74.                 {
  75.                    printf("该学生的学号为:%d\n",P[j].number);
  76.                    printf("该学生的姓名为:");
  77.                    for(k= 0;k<5;k++)
  78.                    {
  79.                             printf("%s",P[j].name[k]);
  80.                         }       
  81.                     printf("该学生的语文成绩为:%.1f\n",P[j].chinese);
  82.                     printf("该学生的数学成绩为:%.1f\n",P[j].math);
  83.                     printf("该学生的英语成绩为:%.1f\n",P[j].english);
  84.                     printf("该学生的总成绩为:%.1f\n",P[j].zf);
  85.                 }
  86.                 getchar();
  87.         }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 21:43:49 | 显示全部楼层
定义一个max,遍历比较赋值,打擂台
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表