C语言 怎么对成绩排序

#include <stdio.h>
#define STU_NUM 2 //定义两个学生 这样比较好调试
#define SUBJ_NUM 3 // 定义三门课程
struct student //定义 学生信息 结构体
{
char name[4];//申明字符型变量 学生名字
int num[9]; // 学生学号
float score[3]; //学生三门课 的分数
}stu[STU_NUM];

int main(void)
{
int i = 0, j = 0;
char *subjects[] = {"第一门课","第二门课","第三门课"};
for (i = 0; i < STU_NUM; i++)
{
if (i == 0)
printf("请输入第%d位学生的信息\n",i+1);
else if (i == 1)
printf("请输入第%d位学生的信息\n",i+1);
else
printf("请输入第%d位学生的信息\n",i+1);
printf("学号:");
scanf("%s", &stu[i].num);
fflush(stdin);
printf("姓名: ");
scanf("%s", &stu[i].name);
fflush(stdin);
for (j = 0; j < SUBJ_NUM; j++)
{
printf("%s: ", subjects[j]);
scanf("%f", &stu[i].score[j]);
fflush(stdin);
}
}
printf("学生所有信息如下: \n");
printf("学号\t姓名\t一\t二\t三\n");
for (i = 0; i < STU_NUM; i++)
{
printf("%s\t%s\t%.2f\t%.2f\t%.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
}
}

请问怎么对学生成绩进行排序呢?每一科 的成绩都要进行排序 由高到低排。请帮我修改下,写简单点 复杂的看不懂 谢谢了

#include <stdlib.h>

int cmp(const void *a, const void *b)
{
student *x=(student*)a;
student *y=(student*)b;
if(x->score[0] > y->score[0])//升序排序(从小到大) 如果>改成<,就是降序排序(从大到小)
return 1;
return 0;
}
//上面函数放在struct student下面,需要该结构
//排序方式可以灵活调整,上面我只是用第一门分数进行比较
//你也可以用其它分数进行比较,多写2个函数就行,如int cmp2(const void*a,const void*b)等等。

//排序函数

qsort(stu,STU_NUM,sizeof(stu[0]),cmp);
//stu是数组名,STU_NUM是数组元素个数,cmp就排序方式(可以替换为cmp2等等)
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-01
数据结构中有详细说明
自己看一下

如果不知道排序是什么东西
讲了也白讲

c语言怎么输出成绩最大并要是第几个输入的
首先,编写代码对成绩进行排序,使用另一个数组记录成绩的原始下标。以下是代码示例。包含头文件:include <stdio.h> 主函数定义:int main(){ 声明变量:int i, j, n, t, k, a[20], b[20];输入成绩数量:scanf("%d", &n);输入成绩和下标:for (i = 0; i < n; i++) { scanf("...

用C语言编程:从键盘输入10个学生的成绩,由高到低排序输出成绩
在C语言编程中,要实现从键盘输入10个学生的成绩并按高分到低分进行排序,可以使用经典的冒泡排序算法。下面是一个简化的步骤描述:首先,包含必要的头文件并定义数组大小:利用C语言,我们可以使用冒泡排序算法轻松解决这个问题。开始时,需要包含,并设定一个数组大小,例如#defineSIZE11。接着,定义一个b...

C语言 怎么对成绩排序
\/\/排序方式可以灵活调整,上面我只是用第一门分数进行比较 \/\/你也可以用其它分数进行比较,多写2个函数就行,如int cmp2(const void*a,const void*b)等等。\/\/排序函数 qsort(stu,STU_NUM,sizeof(stu[0]),cmp);\/\/stu是数组名,STU_NUM是数组元素个数,cmp就排序方式(可以替换为cmp2等等)...

C语言 学生成绩排序 按学生的序号输入 n 名学生的成绩,按照分数由高...
=0:打印排序后的名次信息int main(){ STU *stuHead=(STU *)malloc(sizeof(STU)); stuHead->next=NULL; stuIndex=1; inputStuInfo(stuHead); printf("--打印原始输入的链表!--\\n"); printStuInfo(stuHead,0); printf("--开始按分数降序排列!--\\n"); order...

要求用c语言编写,将总分排序(由高到低),并按总分从高到低输出成绩表
printf("第%d门功课的平均成绩:%.2f\\n",i+1,mean[i]*1.0\/num);} } void sortmean(int num)\/\/按学生平均分由小到大排序 { student temp;int i,j;int maxt,index;for(i=0;i<num-1;i++){ index=i;maxt=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];for(j=i+...

如何用C语言实现根据学号查询学生成绩信息
单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。 运行结果如下: 输入数据: 根据总成绩排序: 根据学号删除学生信息: 贴上代码(有点多) #include <stdio.h> #include <stdlib.h> \/\/exit函数头文件 #include <stri...

用c语言怎么样按总成绩降序排序后显示学生的数据
冒泡和选择排序两种比较简单 举个例子 冒泡 数据在数组score[N]中 for (i=0;i<N;i++} { for (j=0;j<N-1;j++){ if (score[j]<score[j+1]){ int temp;temp=score[j];score[j]=score[j+1];score[j+1]=temp;} } } 这样数据就从大到小排好了 然后使用循环输出学生数据...

在c语言中,求出成绩的最高分,最低分,平均分,然后成绩由高到低怎样排列...
include <stdio.h> include <string.h> int n,a[10005];void Sort(int *s){ for(int i=0;i<n;i++)for(int j=i+1;j<n;j++){ if(s[j]>s[i]){ int snum=s[i];s[i]=s[j];s[j]=snum;} } } int main(){ printf("请输入需要排序的成绩的数量:");scanf("%d",&...

c语言“成绩分级”代码讲解
在使用CodeBlocks创建C语言项目时,我们首先打开CodeBlocks,选择新建项目,语言选择C语言,将项目命名为"GradeLevel",完成创建过程。打开"main.c"文件后,我们需要先对题目进行分析。考虑到使用条件语句来解决此问题,我们决定使用switch语句,因为它可以处理有限的事件case。首先,我们需要编写一个输入成绩的...

要求用c语言编写,将总分排序(由高到低),并按总分从高到低输出成绩表
%d %d %d %d %d\\n",a[i].num,a[i].name,a[i].sex,a[i].run,a[i].fw,a[i].yw,a[i].swim,a[i].total);printf("\\n");} 好了这下满足你的要求了!!!对了,你自己改下文件名字哈!我为了方便就没用你写的那个文件名!

相似回答