1那段代码也可以写成如下
struct Student{
....
....
}name
int paixu(const void *a,const void *b)
name aa=*(name*a);
name bb=*(name*b);
2那段代码也可以写成这
return aa->score > bb->score ? 1 : -1;//升序排序
------------------------------------------------
return aa->score > bb->score ? -1 : 1;//降序排序

1.“->”:是指针运算符,用于从结构体中提取数据。

如下的aa->score就是从Student中提取出score的值。

2.“ > ? :”:三目运算符

如下的aa中的score < bb中的score ? 1 : -1可以看成:如果aa中的score小于bb中的score就返回1,否则返回-1.

3.qsort函数:

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))base -- 指向要排序的数组的第一个元素的指针。
nitems -- 由 base 指向的数组中元素的个数。
size -- 数组中每个元素的大小,以字节为单位。
compar -- 用来比较两个元素的函数。

如下用了chucun——第一个元素的指针, 5,——数组中元素的个数, sizeof(chucun[0])——数组中每个元素的大小, paixu——比较函数

4.(const void *a,const void *b)

const:只可读的常量

void*:空类型(即可以是任何类型)

a:一个指针

5.struct Student* aa = (struct Student*)a;

在4中说过,a为空类型无法与同为空类型的b比较,所以我们进行数据转换(具体是转为Student类型),并将装换后的数值存在aa中。类似于 int b =(int)a;

#include<stdio.h>
#include<stdlib.h>struct Student {int xuehao;char name[20];float score;};1int paixu(const void* a, const void* b){struct Student* aa = (struct Student*)a;1struct Student* bb = (struct Student*)b;1return (aa->score < bb->score ? 1 : -1);2}int main(){struct Student chucun[5] = { {10101,"Zhang",78},{10103,"Wang",98.5},{10106,"Li",86},{10108,"Ling",73.5},{10110,"Fun",100}};qsort(chucun, 5, sizeof(chucun[0]), paixu);int i;for (i = 0; i < 5; i++){printf("%d %s %.2f\n", chucun[i].xuehao, chucun[i].name,chucun[i].score);}return 0;}

Ps:加个关注一起讨论问题!

C语言用结构体排序(学号,姓名,成绩)相关推荐

  1. C语言实现结构体输入学号姓名成绩并按照成绩高低排序输出

    #include <stdio.h> struct student{char name[10];long member;int score; } stu[100],stutemp; //定 ...

  2. 【C语言】结构体排序

    这里写目录标题 快速排序 结构体排序 模仿qsort函数实现冒泡排序 三级目录 快速排序 //快速排序 void qsort(void* base, //base中存放待排序数据中第一个对象地地址si ...

  3. C语言基础 结构体排序

    任务描述 本关任务:有n个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序输出学生的信息. 相关知识 参考结构体第1关相关知识 编程要求 要求按照成绩的高低顺序输出学生的信息. 测试说明 平 ...

  4. c语言程序结构体排序,C语言结构体排序方法

    #include "stdafx.h" #include #include #include using namespace std; struct student { strin ...

  5. c语言程序结构体排序,如何用C语言的结构体数组中的某一值排序?

    [C] 纯文本查看 复制代码#include "stdio.h" #include "string.h" struct student { char name[ ...

  6. c语言咋样编程学号,C语言 用结构体类型数组编程实现输入5个学生的学号姓名平时成绩期中成绩和期末成绩然后输出每位...

    满意答案 zhyx520325 推荐于 2020.12.09 采纳率:41%    等级:10 已帮助:1973人 #include #include //C语言 用结构体类型数组编程实现输入5个学生 ...

  7. python列表输出学生姓名学号链表_c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)...

    展开全部 代码如下: /*用c语言链表编写一个学生信息系统程序,62616964757a686964616fe4b893e5b19e31333365656636要求输出学生的学号,姓名,性别, 学号, ...

  8. C语言中对结构体排序

    在C语言中对结构体排序 用qsort()函数进行排序, qsort()里面要传入4个参数–qsort(数组名,数组长度,sizeof(),排序方法) 实验9-5 查找书籍 (20分) 给定n本书的名称 ...

  9. C语言 · 运用结构体的排序方法

    AllSight C语言 · 运用结构体的排序方法 之前遇到排序只想着最原始的方法,诸如冒泡,选择,快速排序等等,刚刚跟大牛学会了结构体的方法来排序,这样的话以后再也不用怕成绩统计.名次排序之类的题目 ...

最新文章

  1. caffe 测试时间报错 Aborted at unix time
  2. uva 11134——Fabled Rooks
  3. 微信公众平台消息接口开发(27)彩票查询
  4. 李宏毅机器学习——集成学习
  5. Spoj REPEATS 后缀自动机+set
  6. JWT学习(二):Json Web Token JWT的Java使用 (JJWT)
  7. 微分方程数值计算matlab实现,微分方程数值解及Matlab实现
  8. 小米平板2刷哪个系统更流畅_教程:小米平板2轻松刷Win10
  9. cuda10.0及其驱动纯净卸载(笔记)
  10. 导频矢量推导与离散信号傅里叶变换
  11. 关于苹果开发者账号(appleid)的问题修复
  12. Captin for mac(大小写切换悬浮窗提示)
  13. xp的ie显示无服务器,WinXP系统IE无法打开站点怎么办?
  14. 给想立志入行网络或已经初入行的朋友的建议
  15. Stairway to T-SQL: Beyond The Basics Level 4: Using Views to Simplify Your Query - SQLServerCentral
  16. 简谈Oracle体系结构
  17. Teams下载安装教程
  18. 大数据与编程语言关系
  19. VSCode系列之IDEA快捷键
  20. 高等数学竞赛题解析教程P26 - 例1.52(浙江2008竞赛题)

热门文章

  1. 用了云桌面后,才发现远程办公是这么一回事儿
  2. 制作出与众不同的报表
  3. ib_logfile1和ib_logfile0文件丢失或被误删之后恢复数据
  4. Java job interview:算法的经典与数据结构的程序图论
  5. 三菱QCPU模块扫描执行程序的处理步骤
  6. 最新!2022软科世界大学学术排名发布:中国内地163所大学上榜!
  7. nashorn js 调用 java_Java8 Nashorn实现Java调用javascript代码
  8. c 设置语言中文,教大家ccleaner设置中文界面的流程
  9. 【计算机网络】端口详解【概念、作用、分类、常见端口】
  10. 大型SAR卫星星座设计——Python STK联合仿真