博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言结构体排序示例
阅读量:5057 次
发布时间:2019-06-12

本文共 1473 字,大约阅读时间需要 4 分钟。

设计性实验

编程实现对学生成绩表的相关信息排序。
实验要求:
⑴ 建立一个由n个学生的考试成绩表,每条信息由学号、姓名和分数组成。
⑵ 按学号排序,并输出排序结果。
⑶ 按分数排序,分数相同的则按学号有序,并输出排序结果。
⑷ 排序方法及学生成绩表的存储结构不作限制,学生选择性能较好的即可。

 

代码如下:

#include 
#include
#define MaxSize 50struct Stu{ char *name; int id; int grade;};//按照学号排序voidsortById(struct Stu arr[5]){ int i; int cmp(const void *a, const void *b){ return (*(struct Stu *)a).id > (*(struct Stu *)b).id ? 1:-1; } qsort(arr,5,sizeof(arr[0]),cmp); printf("按学号排序:\n"); for(i = 0; i < 5; i++){ printf("%s %d %d\n",arr[i].name,arr[i].id,arr[i].grade); } printf("\n");}//先按成绩后按学号voidsortByGradeAndId(struct Stu arr[5]){ int i; int Comp(const void *p1,const void *p2) { struct Stu *c=(struct Stu *)p1; struct Stu *d=(struct Stu *)p2; if(c->grade!=d->grade) return c->grade-d->grade; else return d->id - c->id; } qsort(arr,5,sizeof(arr[0]),Comp); printf("先按成绩后按学号:\n"); for(i = 0; i < 5; i++){ printf("%s %d %d\n",arr[i].name,arr[i].id,arr[i].grade); }}int main(){ struct Stu arrOfStudent[5] = { {
"郭佳乐", 20140356, 50}, {
"张三", 20140376, 53}, {
"李四", 20140279, 33}, {
"网二麻子", 20140367, 53}, {
"隔壁老王", 20140255, 89} }; sortById(arrOfStudent); sortByGradeAndId(arrOfStudent); return 0;}
View Code

 

转载于:https://www.cnblogs.com/gabygoole/p/5229268.html

你可能感兴趣的文章
HDU 5458 Stability (树链剖分+并查集+set)
查看>>
自定义URL Protocol 协议
查看>>
第五章 二叉树(e5)重构
查看>>
基于visual Studio2013解决算法导论之054图的邻接矩阵表示
查看>>
汇编实验三
查看>>
位运算实例
查看>>
java中关于String对象的解析
查看>>
Linux(二) 常用命令
查看>>
责任链模式
查看>>
一大盒子平均分为三个盒子
查看>>
VC++2012编程演练数据结构《34》树形选择排序
查看>>
Canvas--线条的属性
查看>>
.net集合类的研究--链表—ListDictionary,LinkedList<T>
查看>>
SQLite
查看>>
6、字符串
查看>>
算法训练 出现次数最多的整数
查看>>
简单的贪吃蛇的另一种做法
查看>>
JAR打包和运行
查看>>
HTML5 基础知识(四)
查看>>
Java学习笔记之Scanner报错java.util.NoSuchElementException
查看>>