VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1109|回复: 7

[交流] 学生管理系统的这个排序问题

[复制链接]
46_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-27 20:58: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.         }
复制代码




上一篇:溜溜的我
下一篇:C/C++的 16 大就业领域规划!
46_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-27 21:00:02 | 显示全部楼层
这个排序该怎么写啊?用的冒泡,可是报错,按照总分从大到小排序
77_avatar_middle
最佳答案
31 
online_vip 发表于 2019-10-27 21:21:24 | 显示全部楼层
夜泽大大 发表于 2019-10-27 21:00
这个排序该怎么写啊?用的冒泡,可是报错,按照总分从大到小排序

不知道楼主崩在代码的哪个位置,现在来看这个代码中问题还挺多呢。。。
struct Student P[99]; 总共 99 个元素,楼主肯定是输入了几个学生的信息,后续的都没输入对吧?
所以你再输出的时候就会有问题
84_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-27 21:42:17 | 显示全部楼层
Health 发表于 2019-10-27 21:21
不知道楼主崩在代码的哪个位置,现在来看这个代码中问题还挺多呢。。。
struct Student P[99]; 总共 99  ...

除非他输入0,不然他的程序根本不会结束。他要的成绩排名,实际是按学号排名,k的循环那里看的我一脸懵逼,不知道这个循环是个什么鬼= =,直接name[5]不行吗。但是不知道为什么报错,报的什么错。还没进main主程序,不知道都做了什么
84_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-27 21:43:21 | 显示全部楼层
Health 发表于 2019-10-27 21:21
不知道楼主崩在代码的哪个位置,现在来看这个代码中问题还挺多呢。。。
struct Student P[99]; 总共 99  ...

等于99个元素没有全部初始化,没法输出
75_avatar_middle
最佳答案
23 
online_supermod 发表于 2019-10-27 21:45:07 | 显示全部楼层
这个排序该怎么写啊?用的冒泡,可是报错,按照总分从大到小排序
46_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-28 19:14:40 | 显示全部楼层
magshines 发表于 2019-10-27 21:42
除非他输入0,不然他的程序根本不会结束。他要的成绩排名,实际是按学号排名,k的循环那里看的我一脸懵逼 ...

main函数在下面,我没有复制到。。你说的那个学号排名我去看看;写的本来就是个死循环啊,输入0退出的。。又没有学号是0的学生;
46_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-10-28 19:15:56 | 显示全部楼层
Health 发表于 2019-10-27 21:21
不知道楼主崩在代码的哪个位置,现在来看这个代码中问题还挺多呢。。。
struct Student P[99]; 总共 99  ...

我要把这99个学生改少点?代码没有崩,可以运行,main函数在最下面,我没有截取到;
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-9-29 15:56

Powered by CcTry.CoM

© 2009-2021 cctry.com

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