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

代码如下:

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50 struct Stu{
char *name;
int id;
int grade;
}; //按照学号排序
void
sortById(struct Stu arr[]){
int i;
int cmp(const void *a, const void *b){
return (*(struct Stu *)a).id > (*(struct Stu *)b).id ? :-;
}
qsort(arr,,sizeof(arr[]),cmp);
printf("按学号排序:\n");
for(i = ; i < ; i++){
printf("%s %d %d\n",arr[i].name,arr[i].id,arr[i].grade);
}
printf("\n"); }
//先按成绩后按学号
void
sortByGradeAndId(struct Stu arr[]){
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,,sizeof(arr[]),Comp);
printf("先按成绩后按学号:\n");
for(i = ; i < ; i++){
printf("%s %d %d\n",arr[i].name,arr[i].id,arr[i].grade);
}
}
int main()
{
struct Stu arrOfStudent[] = {
{"郭佳乐", , },
{"张三", , },
{"李四", , },
{"网二麻子", , },
{"隔壁老王", , }
};
sortById(arrOfStudent);
sortByGradeAndId(arrOfStudent);
return ;
}

c语言结构体排序示例的更多相关文章

  1. C语言结构体排序

    定义学生信息结构体和结构体数组,包括学号.两门百分制成绩和姓名;键盘输入 学生不多于 30 人的信息,以输入成绩为负数或大于 100 作为输入结束;按照学号和平均成绩排序,并输出学生信息 //输入学生 ...

  2. go语言的排序、结构体排序

    原文:https://studygolang.com/articles/1598 晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题.排序 sort 是个基本的操作,当然搜索 searc ...

  3. C++结构体排序

    在C++中,对结构体的排序方式比C语言丰富的多.在C语言中,我们主要是通过qsort进行排序操作(抛开手写排序算法不说). 在C++<algorithm>中,有一个十分强大的排序函数sor ...

  4. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  5. C语言结构体变量私有化

    操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 问题描述 C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化? 解决方案 ...

  6. 在C语言结构体中添加成员函数

    我们在使用C语言的结构体时,经常都是只定义几个成员变量,而学过面向对象的人应该知道,我们定义类时,不只是定义了成员变量,还定义了成员方法,而类的结构和结构体非常的相似,所以,为什么不想想如何在C语言结 ...

  7. 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct

    https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...

  8. Linux C语言结构体-学习笔记

    Linux C语言结构体简介 前面学习了c语言的基本语法特性,本节进行更深入的学习. 预处理程序. 编译指令: 预处理, 宏定义, 建立自己的数据类型:结构体,联合体,动态数据结构 c语言表达式工具 ...

  9. Go语言结构体转json的坑

    Go语言结构体转json的坑 标签(空格分隔): go json.Marshal() JSON输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出, ...

随机推荐

  1. JavaScript学习笔记:数组reduce()和reduceRight()方法

    很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: v ...

  2. 微软源代码管理工具TFS2013安装与使用图文教程

    微软源代码管理工具TFS2013安装与使用图文教程 这篇文章主要介绍了微软源代码管理工具TFS2013安装与使用图文教程,本文详细的给出了TFS2013的安装配置过程.使用教程,需要的朋友可以参考下 ...

  3. 原生应用native、Web应用、混合应用hybrid:3者的优缺点解析

    最近原生应用.Web应用.混合应用的名字让我们听得比较熟悉了,现在我们就通过评析各种应用的优缺点来更进一步看看这三者的区别. 一. 原生应用: 你使用过微软PowerPoint 或者 Word吧?这些 ...

  4. css案例学习之relative与absolute

    代码 <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  5. sriov查看pf-vf对应关系

    自己写的, 方便调试. $ cat pf-vf echo "physfn is $1"echo "pf info:"ls /sys/class/net/$1 - ...

  6. CURL常用命令---样例

    原文地址: http://www.thegeekstuff.com/2012/04/curl-examples/ 下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://w ...

  7. hdu 4740 The Donkey of Gui Zhou(dfs模拟好题)

    Problem Description There was no donkey ,) , the down-right cell ,N-) and the cell below the up-left ...

  8. TestWriter自动化测试介绍

    简介: TestWriter是上海博为峰结合多年为企业做测试服务的经验所研发的一款具有自主知识产权的自动化测试工具,为企业用户提供真正的低成本.高效率的自动化测试,引领软件测试自动化运用由技术层面向业 ...

  9. Rescue(bfs)

    Rescue Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submis ...

  10. C#接口的使用【转】

    我们定义一个接口public interface IBark{   void Bark();}再定义一个类,继承于IBark,并且必需实现其中的Bark()方法public class Dog:IBa ...