鱼C论坛

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

学生管理系统的排序问题

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

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

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

x
如图所示,我这个排序该怎么修改啊?按总分从大到小的顺序排
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-10-27 20:55:37 | 显示全部楼层
#include<stdio.h>
#include<string.h>
struct Student      //定义结构体类型 
{
        int number;
        char name[5];
        float chinese;
        float math;
        float english;
        float  zf;
          
};
 struct Student P[99];  //确定结构体;
//void  Dxuesheng(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[s].number);    //输入学号
                if (P[s].number==0)   //判断输入学号是否为0,为0结束
                {
                        return;
                 } 
                 if (m==1)       //不懂 
                 break;
                 printf("姓名:");
                 scanf("%s",P[s].name);
                 printf("语文成绩:");
                 scanf("%f",&z); 
                 P[s].chinese = z;
                 printf("数学成绩:");
                 scanf("%f",&z); 
                 P[s].math = z;
                 printf("英语成绩:");
                 scanf("%f",&z);
                 P[s].english = z;
             P[s].zf=(P[s].english+P[s].chinese+P[s].math);
              s++;
                }
                return s;
 } 

int  Axuesheng(struct Student P[],int p )
{
    int i;           //定义一个i用来显示多少学生 
    for(i=0;i<s;i++)     //循环显示学生信息 
        {
                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);
        }
        }
void  Bxuesheng(struct Student P[],int p )
{
                int i,j,k;
            struct Student tmp={0};
            for(i=0;i<N-1;i++)
                {
                        if(P[i].number<P[i+1].number)
                        {
                                tmp = P[i];
                                P[i] = P[i+1];
                                P[i+1] = tmp;
                         } 
                        }
                printf("====================按总成绩排名=============\n");
                for(j=0;j<N;j++)
                {
                   printf("该学生的学号为:%d\n",P[j].number);
                   printf("该学生的姓名为:");
                   for(k= 0;k<5;k++)
                   {
                            printf("%s",P[j].name[k]);
                        }        
                    printf("该学生的语文成绩为:%.1f\n",P[j].chinese);
                    printf("该学生的数学成绩为:%.1f\n",P[j].math);
                    printf("该学生的英语成绩为:%.1f\n",P[j].english);
                    printf("该学生的总成绩为:%.1f\n",P[j].zf);
                }
                getchar();
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 21:43:49 | 显示全部楼层
定义一个max,遍历比较赋值,打擂台
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-4 17:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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