### 排序算法应用——学生综合成绩排序 #### 背景介绍 在教育领域,学生综合成绩的排序是常见的需求之一。通过合理的排序方法,不仅能够帮助教师快速了解学生的学习状况,还能够激励学生更好地学习。本案例采用C语言编程实现了一种排序算法的应用——学生综合成绩排序。具体来说,程序利用了插入排序算法对学生综合成绩进行排序,并考虑了同分情况下依据不同科目分数进行次级排序的需求。 #### 数据结构与变量定义 首先定义了一个`student`结构体类型,用于存储学生的相关信息: - `char xh[10]`:学号 - `char xm[10]`:姓名 - `int sx`:数学成绩 - `int yw`:语文成绩 - `int yy`:英语成绩 - `int sum`:总分 - `int num`:排名 接着定义了一个`student`类型的数组`s[100]`用于存储学生信息,并通过宏定义`#define N 6`指明了数组`s`中元素的数量为6。 #### 功能模块解析 ##### 创建链接表(初始化数据) 函数`void creatlink(student s[N])`用于初始化学生的基本信息。通过一系列`strcpy`操作来填充学号、姓名,并设置各科成绩。 ##### 计算总分 函数`void sum(student s[])`用于计算每个学生的总分。通过遍历数组中的每一个学生,累加其各科成绩到`sum`字段。 ##### 排序 排序功能由`void sort(student s[])`实现,该函数使用插入排序算法对学生的总分进行排序。若出现总分相同的情况,则进一步比较数学成绩、语文成绩以及英语成绩,以确定最终的排序顺序。 ##### 按学号排序 为了方便查找,`void sortxh(student s[])`函数按学号进行排序,确保排序后的结果仍能保持学号的有序性。 ##### 定义排名 函数`void definenum(student s[])`负责根据排序结果为学生分配排名。这里的排名是基于排序后的位置进行简单赋值。 ##### 输出结果 `void printnum(student s[])`和`void printxh(student s[])`两个函数分别负责输出按成绩排序和按学号排序的结果。这两个函数均会先调用`creatlink`、`sum`、`sort`以及`definenum`等函数完成数据初始化和处理工作,然后再输出排序后的结果。 #### 总结 通过上述代码,我们实现了对学生综合成绩的排序,并考虑了总分相同情况下的次级排序逻辑。这种排序方式不仅适用于教育领域,还可以扩展应用于其他需要对具有多个评分标准的对象进行排序的场景。此外,通过将排序和输出功能分离,使得程序结构更加清晰,易于理解和维护。对于学习数据结构和算法的同学而言,这是一个很好的实践案例。
#include "string.h"
#include "ctype.h"
#define N 6
typedef struct
{
char xh[10],xm[10];
int sx,yw,yy;
int sum;
int num;
}student;
student s[100],t;
void creatlink(student s[N])
{
int i;
{strcpy(s[1].xh ,"990421001");
strcpy(s[1].xm ,"杨光 ");
s[1].sx =80;
s[1].yw =90;
s[1].yy =75;}
{strcpy(s[2].xh ,"990421002");
strcpy(s[2].xm ,"张雨 ");
s[2].sx =70;
s[2].yw =75;
s[2].yy =80;}
{strcpy(s[3].xh ,"990421003");
strcpy(s[3].xm ,"朱小天");
s[3].sx =80;
s[3].yy =75;}
{strcpy(s[4].xh ,"990421004");
strcpy(s[4].xm ,"赵瑞 ");
s[4].sx =70;
s[4].yw =90;
s[4].yy =75;}
{strcpy(s[5].xh ,"990421005");
strcpy(s[5].xm ,"陈嘉成");
s[5].sx =80;
s[5].yw =80;
s[5].yy =80;}
}
void sum(student s[])
{
int i;
for(i=1;i<N;i++)
{
s[i].sum=s[i].sx+s[i].yw+s[i].yy;
s[i].num=0;
}
}
void sort(student s[])
{
int i,j;
for(i=2;i<N;i++)
{
剩余5页未读,继续阅读
- markris2013-12-24不错的,有帮助
- tangyjlove2013-10-24还行,虽然不是特别符合个人的要求
- me_xy2012-07-08对我有些借鉴作用,里面的算法还可以
- 粉丝: 92
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助