学生管理系统的排序问题
如图所示,我这个排序该怎么修改啊?按总分从大到小的顺序排#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();
}
定义一个max,遍历比较赋值,打擂台
页:
[1]